dougan4663 2019-04-23 15:40 采纳率: 0%
浏览 87
已采纳

错误统计在php date_diff上

I'm doing a date-diff on 2015-03-01 and 2017-01-31 (using php7.2) and it returns 1 year, 11 months and 2 days. But it should (obviously) be either 11 months and 0 days or 10 months and 30 days.

Why is that? Please don't tell me, that php is dividing by 30 or something - I don't need a calendar-function if it is less reliable than a manual solution!.. that would be just crazy, right?

$diff = date_create('2015-03-01')->diff(date_create('2017-01-31'));
// returns
DateInterval Object
(
    [y] => 1
    [m] => 11
    [d] => 2
    [h] => 0
    [i] => 0
    [s] => 0
    [weekday] => 0
    [weekday_behavior] => 0
    [first_last_day_of] => 0
    [invert] => 0
    [days] => 702
    [special_type] => 0
    [special_amount] => 0
    [have_weekday_relative] => 0
    [have_special_relative] => 0
)
// and that's simply just wrong

UPDATE it works when switching the timezone from 'Europe/Berlin' to 'UTC'

date_default_timezone_set('UTC');

but yeah, 'Europe/Berlin' should actually work, too...

  • 写回答

2条回答 默认 最新

  • dsfjnxjlbqv9812 2019-04-23 21:48
    关注

    it's just a bug. known, old, never solved. at least it was re-opened in 2017...

    PHP DateTime Timedifference only correct in UTC Timezone?

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?