我有这样的代码:为什么此日期功能只能在2016年12月30日前运行?
for ($i=1; $i<=12; $i++) {
$monthNum = $i;
$monthName = date('F', mktime(0, 0, 0, $monthNum, 10));
$date_established = strtotime($monthName);
$date_established = strtotime('first day of this month', $date_established);
$date_established = date('Y-m-d', $date_established);
$date_established_end = date("Y-m-t", strtotime($date_established));
echo $i .'::'. $monthName . '::' . $date_established . '::' . $date_established_end . '<br>';
}
,到目前为止,它产生:
1::January::2016-01-01::2016-01-31
2::February::2016-02-01::2016-02-28
3::March::2016-03-01::2016-03-31
4::April::2016-04-01::2016-04-30
5::May::2016-05-01::2016-05-31
6::June::2016-06-01::2016-06-30
7::July::2016-07-01::2016-07-31
8::August::2016-08-01::2016-08-31
9::September::2016-09-01::2016-09-30
10::October::2016-10-01::2016-10-31
11::November::2016-11-01::2016-11-30
12::December::2016-12-01::2016-12-31
但今天(2016年12月31),全乱了是这样的:
1::January::2016-01-01::2016-01-31
2::February::2016-03-01::2016-03-31
3::March::2016-03-01::2016-03-31 << duplicate
4::April::2016-05-01::2016-05-31
5::May::2016-05-01::2016-05-31 << duplicate
6::June::2016-07-01::2016-07-31
7::July::2016-07-01::2016-07-31 << duplicate
8::August::2016-08-01::2016-08-31
9::September::2016-10-01::2016-10-31
10::October::2016-10-01::2016-10-31 << duplicate
11::November::2016-12-01::2016-12-31
12::December::2016-12-01::2016-12-31 << duplicate
什么2016年12月31日错?为什么我的代码搞砸了?谢谢。
FWIW,2016既是闰年,也是闰秒的一年。 – bishop
请注意,所有错误的日期都在少于31天的月份。 11月31日实际上是12月1日。 – Barmar
我不能再现你的错误,除非我在'$ monthName'赋值中将'10'改为'31'。 – Barmar