首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >PHP计算被移动1小时。

PHP计算被移动1小时。
EN

Stack Overflow用户
提问于 2014-12-22 10:18:34
回答 3查看 202关注 0票数 1

我所做的是:

代码语言:javascript
运行
复制
echo date('H:i:s', abs(strtotime("10:50:00 - 08:50:00")));

我得到的是:

代码语言:javascript
运行
复制
03:00:00

时区设置没有帮助。不同的服务器/机器的作用是相同的。10-8必须等于2而不是3,我知道简单的解是-3600。但我希望它能起作用而不去修补错误。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-12-22 10:28:32

使用DateTime对象DateInterval

代码语言:javascript
运行
复制
$d1 = new DateTime("10:50:00");
$d2 = new DateTime("08:50:00");
$diff = $d1->diff($d2);
echo $diff->format('%H:%I:%S');
票数 2
EN

Stack Overflow用户

发布于 2014-12-22 10:23:33

问题是,strtotime不计算差异。它试图解析绝对日期。结果是falseabs(false) === 0。那你就只能和

代码语言:javascript
运行
复制
date('H:i:s', 0);

如果您的时区设置为GMT-0300,则date()尝试表示1970-01-01T03:00:00。

票数 2
EN

Stack Overflow用户

发布于 2014-12-22 10:22:58

strtotime将时间转换为Unix时间戳,该时间戳基本上是1970年以来的秒数,这是一个整数。

因此,您可以转换这两次,并做一个简单的减法,然后转换回使用日期。

代码语言:javascript
运行
复制
echo date('H:i:s', strtotime("10:50:00") - strtotime("08:50:00"));
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27600651

复制
相关文章

相似问题

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