【问题标题】:Wrong time calculated having more than 30min计算错误时间超过 30 分钟
【发布时间】:2013-08-05 14:32:33
【问题描述】:

我有一个奇怪的问题,我有这个代码,如果第二次有 30 分钟或更长时间,输出时它总是会增加一小时。

$time1 = '12:00';
$time2 = '13:30';
list($hours, $minutes) = explode(':', $time1);
$startTimestamp = mktime($hours, $minutes);

list($hours, $minutes) = explode(':', $time2);
$endTimestamp = mktime($hours, $minutes);

$seconds = $endTimestamp - $startTimestamp;
$minutes = ($seconds / 60) % 60;
$hours = round($seconds / (60 * 60));

这里发生了什么?

【问题讨论】:

  • 结果是什么,你认为是什么?
  • 01:30 小时,但到了 2:30。

标签: php time calculator


【解决方案1】:

记住数学。将区间 [0.5;1) 中的所有内容四舍五入等于 1。

round(0.5) = 1

这就是为什么您在 [30;60] 中的分钟数中增加了 1 小时。

【讨论】:

  • 好的,谢谢,我看到了错误。那我应该使用 intval 吗?
【解决方案2】:

而不是使用round 使用intval 作为$seconds / (60 * 60) 表达式总是返回一个浮点数,我们只需要该结果的整数部分

【讨论】:

  • @middaparka - $seconds / (60 * 60) 表达式总是返回一个浮点数,我们只需要该结果的整数部分。是的,我同意,这是一个懒惰的答案。
猜你喜欢
  • 2019-09-28
  • 2018-07-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-16
相关资源
最近更新 更多