任何想法为什么strtotime有时会在月底到下个月?
for($i=1;$i<12;$i++)
{
$d = "Y-$i-t 00:00:00";
echo "Date as String: " . $d = date($d) . "\n";
echo "Date as UnixTime: " . strtotime($d) . "\n";
echo "UnixTime back to String: " . $d = date('Y-m-d 00:00:00', strtotime($d)) . "\n";
echo "String back to UnixTime: " . strtotime($d) . "\n\n";
}
结果:
日期为字符串:2011-1-31 00:00:00
日期为UnixTime:1296450000
UnixTime返回String:2011-01-31 00:00:00
回到UnixTime的字符串:1296450000
日期为字符串:2011-2-31 00:00:00
日期为UnixTime:1299128400
UnixTime返回字符串:2011-03-03 00:00:00
字符串返回UnixTime:1299128400
日期为字符串:2011-3-31 00:00:00
日期为UnixTime:1301544000
UnixTime返回字符串:2011-03-31 00:00:00
回到UnixTime的字符串:1301544000
日期为字符串:2011-4-31 00:00:00
日期为UnixTime:1304222400
UnixTime返回String:2011-05-01 00:00:00
回到UnixTime的字符串:1304222400
日期为字符串:2011-5-31 00:00:00
日期为UnixTime:1306814400
UnixTime返回字符串:2011-05-31 00:00:00
回到UnixTime的字符串:1306814400
日期为字符串:2011-6-31 00:00:00
日期为UnixTime:1309492800
UnixTime返回字符串:2011-07-01 00:00:00
回到UnixTime的字符串:1309492800
日期为字符串:2011-7-31 00:00:00
日期为UnixTime:1312084800
UnixTime返回字符串:2011-07-31 00:00:00
回到UnixTime的字符串:1312084800
日期为字符串:2011-8-31 00:00:00
日期为UnixTime:1314763200
UnixTime返回字符串:2011-08-31 00:00:00
字符串返回UnixTime:1314763200
日期为字符串:2011-9-31 00:00:00
日期为UnixTime:1317441600
UnixTime返回字符串:2011-10-01 00:00:00
字符串返回UnixTime:1317441600
日期为字符串:2011-10-31 00:00:00
日期为UnixTime:1320033600
UnixTime返回字符串:2011-10-31 00:00:00
回到UnixTime的字符串:1320033600
日期为字符串:2011-11-31 00:00:00
日期为UnixTime:1322715600
UnixTime返回字符串:2011-12-01 00:00:00
回到UnixTime的字符串:1322715600
答案 0 :(得分:3)
t
返回传递日期的月份天数(或者,在您的情况下,因为您没有传递日期,即当前月份)。因为您在1月份运行此代码,结果将是31.
2月没有31天所以PHP会额外增加3天,将你带到3月3日。
答案 1 :(得分:0)
因为并非所有月份都有31天。
答案 2 :(得分:-1)
30天有九月,四月,六月和十一月。其他所有人都有31人,除了2月份有28人,有时候有29人。