Search code examples
phplaravellaravel-4laravel-5php-carbon

How to convert week-days into hours in laravel 4.2?


1-If any user enter 1w2d in input field.

2-Value in this input field should get converted to total hours.

3After that I have to insert these total hours in database.

4When I will fetch total hours from database it should return 1w2d.

Possible notation are that there is one Input field named as Estimated time where user can enter 1w2d or 1W2D .This should get converted into total hours.After that I have to send it into database.

*I am feeling helpless.I don't know what to do.I know how to convert week into hours but don't have any idea that how to convert 1w2d into hours.


Solution

  • <?php
    
    function convertWDHtoHours($data) {
    
      preg_match_all('/(\d+[wW]+|\d+[dD]+|\d+[hH]+)/', $data, $matches);
      $hours = 0;
      foreach($matches[0] AS $match) {
        switch(true) {
          case preg_match('/\d+[hH]+/', $match) :
            $hours += (int)$match;
            break;
    
          case preg_match('/\d+[dD]+/', $match) :
            $hours += (int)$match*24;
            break;
    
          case preg_match('/\d+[wW]+/', $match) :
            $hours += (int)$match*24*7;
            break;
        }
      }
      return $hours;
    }
    
    print "23h => ".convertWDHtoHours('23h')."<br/>";
    print "20d => ".convertWDHtoHours('20d')."<br/>";
    print "2W => ".convertWDHtoHours('2W')."<br/>";
    print "1D2h => ".convertWDHtoHours('1D2h')."<br/>";
    print "1w2H => ".convertWDHtoHours('1w2H')."<br/>";
    print "1w2d => ".convertWDHtoHours('1w2d')."<br/>";
    
    ?>
    

    Here is result:

    http://codepad.viper-7.com/Ioj02x