【问题标题】:Converting date HH:MM to numeric values [closed]将日期 HH:MM 转换为数值 [关闭]
【发布时间】:2013-06-18 11:14:18
【问题描述】:

所以我有几个包含工作时间的 HTML 字段。例如,用户可以输入08:15(应该给我8.25)和12:30(应该给我12.5)。

如何做到这一点?我正在考虑将开始日期定为 1970 年 1 月 1 日,添加小时数,将其转换为时间戳,然后进行其他数学运算,但我不确定这是否正确,我什至可能会忽略一些(很明显) 函数。

【问题讨论】:

  • mins + (secs / 60) 怎么样?
  • 出于什么目的将 HH:MM 更改为数值?
  • jqueryphp 标签,但有问题我看不到您要解析哪种语言

标签: php jquery date


【解决方案1】:
<?php

$string = "08:15";

$items = explode(":",$string);
$hours = intval($items[0]);
$minutes = intval($items[1]);

$decimalhours = $hours + ($minutes / 60);
echo $decimalhours;

此代码绝不是健壮的,因为当用户不遵守您要求的严格语法时它会失败。尽管如此,它应该为您指明正确的方向。

【讨论】:

  • 那没有任何意义。必须将结果值强制转换为浮点数(此处隐式完成)才能按要求工作。
  • +1 for intval() 虽然你的爆炸可以用list($hours, $minutes) = 更清楚一点
  • @PhpMyCoder 使用 intval() 更清晰?如果您不介意,我可以看一下代码吗?
  • @YourCommonSense 我认为你误解了。我的意思是,不要使用$items = explode(':', $string);,然后用$items[0] 表示小时,用$items[1] 表示分钟,用list($hours, $minutes) = explode(':', $string); 表示含义会更清楚
  • @PhpMyCoder 如果你没有注意到,你只是让这段代码更复杂
【解决方案2】:

我会告诉你如何计算它(期待你编码:D)

  1. 让MM部分为x
  2. 现在您的结果将是y= 5/3 * x

    举个例子,如果是 8:15,那么
    x = 15
    y = 5/3*15 = 25
    所以结果是 8.25

【讨论】:

    【解决方案3】:

    这不是那么棘手,所以你可以这样做:

    <?php
    header('Content-Type: text/plain');
    
    list($hours, $minutes) = explode(':', '12:30');
    
    $hours += $minutes / 60;
    
    echo $hours;
    ?>
    

    并编写自己的函数:

    <?php
    
    header('Content-Type: text/plain');
    
    function time2dec($time, $delimiter = ':'){
        list($h, $m, $s) = array_pad(explode($delimiter, $time), 3, 0);
        return $h + $m / 60 + $s / 3600;
    }
    
    echo time2dec('12:30'), PHP_EOL;
    echo time2dec('12:15'), PHP_EOL;
    echo time2dec('12:15:15'), PHP_EOL;
    echo time2dec('12:a:15'), PHP_EOL;
    ?>
    

    演出:

    12.5
    12.25
    12.254166666667
    12.004166666667
    

    【讨论】:

      猜你喜欢
      • 2016-12-21
      • 2023-03-13
      • 1970-01-01
      • 2022-11-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-31
      • 2013-11-12
      相关资源
      最近更新 更多