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...
it's just a bug. known, old, never solved. at least it was re-opened in 2017...