我必须在Unix时间戳格式中找到两个日期之间的总月份。我想为此创建一个PHP函数。我试过这个:
get_total_month($startunixdate, $endunixdate) {
$monthdiff = $endunixdate-$startunixdate;
$monthdiff = $monthdiff / 60*60*24*31;
return $monthdiff;
}
这个功能是否分别考虑闰年和30个月和31个月,或者它只算大约一个月?
答案 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