【问题标题】:Calculate duration with php使用 php 计算持续时间
【发布时间】:2013-03-31 16:54:22
【问题描述】:

我正在使用以下代码来获取时差。大多数情况下都可以。但是当开始时间是下午 12:00 和结束时间是下午 1:30 时,它会显示 11.0 而不是 1:30 作为结果.开始和结束时间来自 mysql。

$startTime=new DateTime(date("h:i",strtotime($data['start_time'])));
$endTime=new DateTime(date("h:i",strtotime($data['end_time'])));
$timeInterval=$startTime->diff($endTime);
$getHours=$timeInterval->format('%h');
$getMinutes=$timeInterval->format('%i');
$duration=$getHours.":".$getMinutes;

请帮帮我。 谢谢。

【问题讨论】:

  • 那么不要使用date('h:i'),就是消除了AM/PM的区别。您可以使用date('H:i'),但更好的是,假设您有一个健全的TIMEDATETIME 列,只需将原始$data['start_time'] 输入DateTime 的构造函数即可。

标签: php mysql datetime


【解决方案1】:

只需要将h:i改为H:i即可:

<?php
$startTime=new DateTime(date("H:i",strtotime('12:00')));
$endTime=new DateTime(date("H:i",strtotime('13:30')));
$timeInterval=$startTime->diff($endTime);
$getHours=$timeInterval->format('%h');
$getMinutes=$timeInterval->format('%i');
$duration=$getHours.":".$getMinutes;
echo $duration;

See it in action

【讨论】:

    【解决方案2】:

    希望这会有所帮助:

    $differenceMinutes  = (strtotime($data['end_time']) - strtotime($data['start_time'])) / 60; // Get difference as minutes
    $getHours           = floor($differenceMinutes / 60); // Get hours
    $getMinutes         = floor($differenceMinutes % 60); // Get minutes
    $duration           = $getHours . " h " . $getMinutes . " min";
    
    print $duration; // Print it out!
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-07-30
      • 1970-01-01
      • 1970-01-01
      • 2011-06-26
      • 1970-01-01
      • 1970-01-01
      • 2022-08-06
      • 2016-01-18
      相关资源
      最近更新 更多