试图获得上个月的第一天和最后一天:
$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)
答案 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;
默认为没有时间规格的当前时间。