时差4月 - 行军错误的价值

时间:2012-10-02 11:15:08

标签: php date datetime timestamp

我正在尝试使用以下功能获得一个月的范围:

static public function getMonthRange($month, $year)
{
    $date = DateTime::createFromFormat('d-m-Y','01-'.$month.'-'.$year);
    $start = $date->getTimestamp();

    return array(
        'start' => $start,
        'end' => $date->modify('first day of next month')->getTimestamp()
    );
}

现在除了行军之外这个工作正常。当我通过使用以下公式计算每月天数来检查值时:((end - start) / 60 / 60 / 24)我发现3月份是30.958333333333天,而其他月份则给出了正确的天数。

我决定在这样的计算中输入日期:

$march = ((strtotime('2012-04-01') - strtotime('2012-03-01')) / 60 / 60 / 24); //30.95833..
$april = ((strtotime('2012-05-01') - strtotime('2012-04-01')) / 60 / 60 / 24); //30
$may =   ((strtotime('2012-06-01') - strtotime('2012-05-01')) / 60 / 60 / 24); //31

它仍然给了我错误的游行天数。我的方法有问题吗?更重要的是;我该如何解决这个问题?

提前致谢。

1 个答案:

答案 0 :(得分:2)

三个字:夏令时。

三月错过了一个小时。

此外,您的函数存在于PHP中:http://php.net/manual/en/function.cal-days-in-month.php