【问题标题】:How to convert week-days into hours in laravel 4.2?如何在 laravel 4.2 中将工作日转换为小时?
【发布时间】:2015-10-30 17:22:30
【问题描述】:

1-如果任何用户在输入字段中输入 1w2d。

此输入字段中的 2 值应转换为总小时数。

3之后,我必须在数据库中插入这些总小时数。

4当我从数据库中获取总小时数时,它应该返回 1w2d。

可能的符号是有一个名为估计时间的输入字段,用户可以在其中输入 1w2d 或 1W2D 。这应该转换为总小时数。之后我必须将其发送到数据库中。

*我感到无助。我不知道该怎么办。我知道如何转换周 到小时,但不知道如何将 1w2d 转换为小时。

【问题讨论】:

  • 您可以在输入字段中使用所有可能的符号更新您的帖子吗?我认为这是输入数据的一种非常奇怪的方式。不能使用日期选择器或<input name="weeks" type="number"><input name="days" type="number"> 之类的东西吗?
  • 或者提供一个输入掩码,之后您可以简单地拆分它。顺便提一句。这与 Laravel 无关。
  • 我已经在详细部分提到了可能的符号
  • 我建议你查看PHP's DateInterval class提供的标准格式化字符串。它与您正在寻找的东西非常相似,并且已经直接构建到 PHP 中。符号略有不同,但足够接近,应该对您有所帮助。

标签: php laravel laravel-4 laravel-5 php-carbon


【解决方案1】:
<?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/>";

?>

结果如下:

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

【讨论】:

  • 如何将其插入数据库
  • 你的正则表达式不工作。显示错误 preg_match(): 没有找到结束分隔符 '/'
  • 从结果链接中获取代码。它正在工作。也许在某个地方我忘记了分隔符,找到错误行并在正则表达式的末尾添加分隔符。
  • 谢谢。你是宝石老兄。你理解我的问题并给了我正确的答案。非常感谢。如果我想将总小时数转换为工作日小时数,我必须做什么
  • 将小时转换为 AwBdCh 格式: function convertHoursToWDH($hours){ $weeks = (int)($hours/(24*7)); $小时-= $周*24*7; $days =(int)($hours/24); $小时-= $天*24;返回 $weeks.'W'.$days.'D'.$hours.'H';}
猜你喜欢
  • 2015-10-31
  • 1970-01-01
  • 2020-07-16
  • 2014-02-23
  • 2012-03-28
  • 1970-01-01
  • 2023-03-20
  • 2018-09-11
  • 1970-01-01
相关资源
最近更新 更多