获得上个月第一天的结果变化

时间:2017-03-06 17:01:31

标签: php date

试图获得上个月的第一天和最后一天:

 $monthStart = new DateTime("first day of last month");
 $monthEnd = new DateTime("last day of last month");

 $sMonth = $monthStart->format('U');
 $eMonth = $monthEnd->format('U');

 echo $sMonth . "," . $eMonth;

结果:

 1485968094,1488300894

2秒后做同样的事情:

 1485968096,1488300896

56秒后做同样的事情:

 1485968151,1488300951 

为什么这些值会发生变化?我每次都会期待以下情况:

 1485907200,1488240000 (for feb 2017)

2 个答案:

答案 0 :(得分:2)

您需要明确设置时间:

$monthStart = (new DateTime("first day of last month"))->setTime(0,0,0);
$monthEnd = (new DateTime("last day of last month"))->setTime(23,59,59);

默认情况下,它会返回当前时间。

答案 1 :(得分:0)

那是因为你没有指定时间复合,只是日期。

您可以使用以下代码解决此问题:

$monthStart = new DateTime("midnight first day of last month");
$monthEnd = new DateTime("midnight last day of last month");

$sMonth = $monthStart->format('U');
$eMonth = $monthEnd->format('U');

echo $sMonth . "," . $eMonth;

默认为没有时间规格的当前时间。