我想问一个关于这篇文章 (How to get the difference between two dates with 360 days/year, 30 days/month format?) 中给出的答案的问题,我无法发表评论,因为我没有必要的声誉。 提供的功能
function diff360($date1, $date2) {
$date1 = new DateTime($date1);
$date2 = new DateTime($date2);
$diff = $date1->diff($date2);
$days = ($date2->format('d') + 30 - $date1->format('d')) % 30;
return array(
"y" => $diff->y,
"m" => $diff->m,
"d" => $days,
"totaldays" => $diff->y * 360 + $diff->m * 30 + $days
);
}
通常效果很好,但某些情况除外,例如diff360("2020-09-01", "2021-07-01");
输出“0 年、9 个月、0 天”,而不是所需的“0 年、10 个月、0 天”。
你能解释一下原因吗?
答案 0 :(得分:1)
我测试了 diff360("2020-09-01", "2021-07-01"),它给了我“0 年、10 个月、0 天”。
答案 1 :(得分:0)
显然问题源于我的默认时区(我不知道为什么)这是欧洲的。如果我将时区更改为美国,例如
date_default_timezone_set('America/Los_Angeles');
问题解决了