总计月数

时间:2012-01-04 09:02:19

标签: php

我必须在Unix时间戳格式中找到两个日期之间的总月份。我想为此创建一个PHP函数。我试过这个:

get_total_month($startunixdate, $endunixdate) {
    $monthdiff = $endunixdate-$startunixdate;
    $monthdiff = $monthdiff / 60*60*24*31; 
    return $monthdiff;
}

这个功能是否分别考虑闰年和30个月和31个月,或者它只算大约一个月?

3 个答案:

答案 0 :(得分:4)

你的答案就在这一行;

$monthdiff = $monthdiff / 60*60*24*31

这将基于31天计算一个月。代码将秒数除以60以获得分钟数,将60除以得到小时数,将24除以得到天数,然后将31用作一个月的长度。

这将导致月数的近似值。例如,如果您在2月初(3月初)获取时间戳,则通常会有相当于28天的时间戳差异(闰年为29天)。将它除以31将得到小于1的分数,因为您使用31表示整月,而实际上整个日历月已经过去。

答案 1 :(得分:2)

要执行此操作,请使用 DateTime 类。

function get_total_month($start, $end) {

    // Create DateTime objects
    $dt1 = new DateTime($start);
    $dt2 = new DateTime($end);

    // Get DateInterval object representing difference between the two
    $diff = $dt1->diff($dt2); // OR: $diff = date_diff($dt1, $dt2);

    // Print the "months" out
    echo $diff->format("Difference: %R%m months"); // OR access $diff->m manually

答案 2 :(得分:1)

你可以使用PHP 5.3日期时间方法。

$datetime1 = new DateTime('2009-10-11');
$datetime2 = new DateTime('2009-10-13');
$interval = $datetime1->diff($datetime2);
echo $interval->format('%R%a days');

参考:PHP DateTime