在2日期之间计算月份

时间:2016-02-05 04:56:36

标签: php datetime

我知道这是一个愚蠢的问题,但我需要你帮助。

如果我使用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。你可以帮帮我吗?

3 个答案:

答案 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);
?>