【问题标题】:time difference in hours and min in php HH:MM format for d/m/Y - h:ia [duplicate]d / m / Y的php HH:MM格式的小时和分钟时差 - h:ia [重复]
【发布时间】:2012-10-21 22:56:03
【问题描述】:

可能重复:
get difference in time in HH:MM format php

我的时间格式是 d/m/Y - h:ia

示例输出是 21/10/2012 - 03:49pm

我正在使用这段代码来计算 $from 和 $to 之间的差异

 $to = strtotime("21/10/2012 - 10:30pm");
 $from = strtotime("22/10/2012 - 8:30am");
 $stat = date("H\h:i\m", abs($to - $from));

但我总是得到不正确的值

对于上面的示例,我得到了 16h:00m 的输出,但它应该是 10h:00m

有没有更有效的方法来做到这一点?

【问题讨论】:

  • date() 的结果取决于您的时区。请改用 gmtime() 来避免这种情况。
  • 请不要重复同一个问题,你之前的问题有可能的答案。
  • 该问题的时间日期格式不正确

标签: php datetime datediff


【解决方案1】:

这种格式不正确,strtotime 无法识别(请参阅第三条注释)我怀疑您的时区是 GMT-8 并且您总是会从这种格式的日期中得到 16 小时。

您必须手动将此日期转换为 php 可识别的格式才能进行一些计算

【讨论】:

  • 得到了答案,感谢您的提示!
【解决方案2】:

退出:

if(function_exists('date_default_timezone_set')) date_default_timezone_set('America/New_York');

$from = $_SESSION['loginT'];
$to = date('m/d/Y  h:i A');
$diff_seconds  = strtotime($to) - strtotime($from);
$stat = floor($diff_seconds/3600).'H:'.floor(($diff_seconds%3600)/60).'M';

来自登录:

$_SESSION['loginT'] = date('m/d/Y  h:i A');

样本输出:

21/10/2012 - 06:37pm    21/11/2012 - 06:07pm        23H:30M

【讨论】:

    猜你喜欢
    • 2018-05-25
    • 2021-03-09
    • 1970-01-01
    • 1970-01-01
    • 2023-03-08
    • 1970-01-01
    • 2020-03-18
    • 1970-01-01
    • 2020-10-16
    相关资源
    最近更新 更多