php中360天/年,30天/月格式的两个日期之间的差异

时间:2021-06-23 06:34:02

标签: php date datetime diff

我想问一个关于这篇文章 (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 天”。 你能解释一下原因吗?

2 个答案:

答案 0 :(得分:1)

我测试了 diff360("2020-09-01", "2021-07-01"),它给了我“0 年、10 个月、0 天”。

答案 1 :(得分:0)

显然问题源于我的默认时区(我不知道为什么)这是欧洲的。如果我将时区更改为美国,例如

date_default_timezone_set('America/Los_Angeles');

问题解决了