php 时间 天数差,PHP DateTime差返回错误的天数

我有以下代码,打印出两个日期之间的差异:

print_r((new DateTime('2018-01-01'))->diff(new DateTime('2018-11-01')));

print_r((new DateTime('2018-10-01'))->diff(new DateTime('2018-11-01')));

输出:

DateInterval Object

(

[y] => 0

[m] => 10

[d] => 0

[h] => 0

[i] => 0

[s] => 0

[f] => 0

[weekday] => 0

[weekday_behavior] => 0

[first_last_day_of] => 0

[invert] => 0

[days] => 304

[special_type] => 0

[special_amount] => 0

[have_weekday_relative] => 0

[have_special_relative] => 0

)

DateInterval Object

(

[y] => 0

[m] => 1

[d] => 1

[h] => 0

[i] => 0

[s] => 0

[f] => 0

[weekday] => 0

[weekday_behavior] => 0

[first_last_day_of] => 0

[invert] => 0

[days] => 31

[special_type] => 0

[special_amount] => 0

[have_weekday_relative] => 0

[have_special_relative] => 0

)

如您所见,第一个日期差正确返回10个月零天.

但是,第二个返回而不是0天返回1个月,而是错误地返回了1个月零1天.

是什么原因造成的?

让我感到困惑的是,我试图在几个PHP沙箱站点上运行此代码,但结果却不一致:

解决方法:

这是由于服务器时区.只需将所有内容设置为UTC,就可以了.

print_r((new DateTime('2018-10-01', new DateTimeZone('UTC')))->diff(new DateTime('2018-11-01', new DateTimeZone('UTC'))));

标签:php-7-2,php

来源: https://codeday.me/bug/20191024/1924313.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值