在 PHP 中减去时间
Posted
技术标签:
【中文标题】在 PHP 中减去时间【英文标题】:Subtract time in PHP 【发布时间】:2011-07-24 17:28:28 【问题描述】:我已经找了几个小时的答案,但我找不到。
我正在写一个简单的script
。用户设置他们的工作开始和结束时间。例如,有人从 8:00 工作到 16:00。
我怎样才能减去这个时间来看看这个人工作了多长时间?
我正在尝试strtotime();
,但没有成功...
【问题讨论】:
【参考方案1】:更好一点的是:
$a = new DateTime('08:00'); $b = new DateTime('16:00'); $interval = $a->diff($b); echo $interval->format("%H");这会给您带来小时数的差异。
【讨论】:
不知道能不能把整个区间转换成秒? ->format('%S') 只是给了我间隔输出的秒部分,而不是计算的总秒数。【参考方案2】:如果你得到有效的日期字符串,你可以使用这个:
$workingHours = (strtotime($end) - strtotime($start)) / 3600;
这将为您提供一个人的工作时间。
【讨论】:
您可以除以 60 而不是 3600 得到分钟,然后除以 60 并向下取整 (floor()) 得到整小时,剩下的分钟数%60 得到分钟。跨度> 日期('H:i',$workingHours)。我不建议在这里使用 strtottime,因为 strtotime 会返回日期的 unix 时间戳。【参考方案3】:另一种解决方案是检查 Unix 时间戳整数值差异(以秒为单位)。
<?php
$start = strtotime('10-09-2019 12:01:00');
$end = strtotime('12-09-2019 13:16:00');
$hours = intval(($end - $start)/3600);
echo $hours.' hours'; //in hours
//If you want it in minutes, you can divide the difference by 60 instead
$mins = (int)(($end - $start) / 60);
echo $mins.' minutues'.'<br>';
?>
如果您的原始日期以 Unix 时间戳格式存储,则此解决方案会更好。
【讨论】:
欢迎来到 Stack Overflow。在用现有答案回答一个八年前的问题时,指出您的答案所针对的问题的哪些新方面很有用。通过添加解释,包括代码解决问题的原因和方式,几乎总是可以改进仅代码的答案。以上是关于在 PHP 中减去时间的主要内容,如果未能解决你的问题,请参考以下文章
PHP,需要从 DateTime 中减去 12 小时 30 分钟