首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在php中减去两个日期

在php中减去两个日期
EN

Stack Overflow用户
提问于 2012-05-06 15:55:08
回答 6查看 108.5K关注 0票数 35

我在php里有两个日期。

代码语言:javascript
复制
$date1 = 'May 3, 2012 10:38:22 GMT'

$date2 = '06 Apr 2012 07:22:21 GMT'

然后我把它们都减去

代码语言:javascript
复制
$date2 - $date1

,并获取

代码语言:javascript
复制
Result:6

为什么结果是6而不是27?如何减去这两个日期,并使其返回基于月份差异的结果,同时减去年、日和时间?

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2012-05-06 16:03:03

第1部分:为什么结果是6?

第一次减去日期时,日期只是字符串。PHP尝试将它们转换为整数。它通过转换直到第一个非数字来实现这一点。因此,date2变为6,date1变为0。

第2部分:如何让它工作?

代码语言:javascript
复制
$datetime1 = strtotime('May 3, 2012 10:38:22 GMT');
$datetime2 = strtotime('06 Apr 2012 07:22:21 GMT');

$secs = $datetime2 - $datetime1;// == <seconds between the two times>
$days = $secs / 86400;

根据需要进行转换。

票数 71
EN

Stack Overflow用户

发布于 2012-05-06 16:03:04

使用DateTimeDateInterval

代码语言:javascript
复制
$date1 = new DateTime("May 3, 2012 10:38:22 GMT");
$date2 = new DateTime("06 Apr 2012 07:22:21 GMT");
echo $date1->diff($date2)->format("%d");
票数 21
EN

Stack Overflow用户

发布于 2012-05-06 16:05:41

有一种方法可以使用mktime n,在时间戳中创建日期,然后减去,然后使用日期函数以您想要的方式显示。

另一种方法是将两个日期的格式设置为相同的格式,然后减去...

第三条路

代码语言:javascript
复制
$date1=  new DateTime("May 3, 2012 10:38:22 GMT");
$date2= new DateTime("06 Apr 2012 07:22:21 GMT");
echo $date1->diff($date2)->("%d");

第四条路

代码语言:javascript
复制
$datetime1 = strtotime('May 3, 2012 10:38:22 GMT');
$datetime2 = strtotime('06 Apr 2012 07:22:21 GMT');
$secs = $datetime2 - $datetime1;// == return sec in difference
$days = $secs / 86400;
票数 14
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10469037

复制
相关文章

相似问题

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