首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在PHP中计算两个日期之间的小时数

在PHP中计算两个日期之间的小时数
EN

Stack Overflow用户
提问于 2010-06-24 17:17:22
回答 12查看 182.5K关注 0票数 119

如何计算两个日期之间的差额(小时)?

例如:

代码语言:javascript
复制
day1=2006-04-12 12:30:00
day2=2006-04-14 11:30:00

在这种情况下,结果应该是47小时。

EN

回答 12

Stack Overflow用户

发布于 2010-06-24 17:20:28

代码语言:javascript
复制
$t1 = strtotime( '2006-04-14 11:30:00' );
$t2 = strtotime( '2006-04-12 12:30:00' );
$diff = $t1 - $t2;
$hours = $diff / ( 60 * 60 );
票数 86
EN

Stack Overflow用户

发布于 2010-06-24 17:20:01

你的答案是:

round((strtotime($day2) - strtotime($day1))/(60*60))

票数 18
EN

Stack Overflow用户

发布于 2014-01-30 05:30:04

获得两个日期(日期时间)之间的正确小时数的最简单方法是使用Unix时间戳中的差异,即使在夏令时更改的情况下也是如此。Unix时间戳是指自1970-01-01T00:00:00UTC以来经过的秒数,忽略闰秒(这是可以接受的,因为您可能不需要这种精度,而且很难将闰秒考虑在内)。

将带有可选时区信息的datetime字符串转换为Unix时间戳的最灵活方法是构造一个DateTime对象(也可以使用DateTimeZone作为构造函数中的第二个参数),然后调用它的getTimestamp方法。

代码语言:javascript
复制
$str1 = '2006-04-12 12:30:00'; 
$str2 = '2006-04-14 11:30:00';
$tz1 = new DateTimeZone('Pacific/Apia');
$tz2 = $tz1;
$d1 = new DateTime($str1, $tz1); // tz is optional,
$d2 = new DateTime($str2, $tz2); // and ignored if str contains tz offset
$delta_h = ($d2->getTimestamp() - $d1->getTimestamp()) / 3600;
if ($rounded_result) {
   $delta_h = round ($delta_h);
} else if ($truncated_result) {
   $delta_h = intval($delta_h);
}
echo "Δh: $delta_h\n";
票数 16
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3108591

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档