我知道这是一个愚蠢的问题,但我需要你帮助。
如果我使用datediff,那就太奇怪了,
例如
$begin = "2016-01-01"; $end = "2016-01-31";
$date1=date_create(date_format($begin,"Y-m-d"));
$date2=date_create(date_format($end,"Y-m-d"));
$diff=date_diff($date1,$date2); $month = $diff->format("%m");
当我回显$ month时显示0
。它应该是1
,因为1月的最后一天是31
天。但为什么显示0
?
如果我改变$end = "2016-02-01";
变为1
。你可以帮帮我吗?
答案 0 :(得分:1)
它正在返回正确的答案,因为只有30天的差异,所以一个月还没有过去。
答案 1 :(得分:0)
<?php
$timeStart = strtotime("2016-01-01");
$timeEnd = strtotime("2016-01-31");
// Adding current month + all months in each passed year
$months = 1 + (date("Y",$timeEnd)-date("Y",$timeStart))*12;
// Add/subtract month difference
$months += date("m",$timeEnd)-date("m",$timeStart);
echo $months;
?>
答案 2 :(得分:0)
你可以试试这个,
<?php
$begin = "2016-01-01"; $end = "2016-01-31";
$date1=new DateTime($begin);
$date2=new DateTime($end);
$date2->add(new DateInterval('P1D'));
$diff=$date2->diff($date1);
$month = $diff->m;
print_r($month);
?>