第一天!=“本月的第一天”
使用“第一天”修改日期时,PHP中有一个非常奇怪的行为。
'first day' ' of'?
设置当前月份的第一天。 (http://php.net/manual/de/datetime.formats.relative.php)
$currentMonthDate = new DateTime("2014-07-30 10:26:00.000000");
echo $currentMonthDate->format('Ym');
$currentMonthDate->modify('first day');
echo $currentMonthDate->format('Ym');
201407/201407行
$currentMonthDate = new DateTime("2014-07-31 10:26:00.000000");
echo $currentMonthDate->format('Ym');
$currentMonthDate->modify('first day');
echo $currentMonthDate->format('Ym');
201407/201408为什么?
$currentMonthDate = new DateTime("2014-08-01 10:26:00.000000");
echo $currentMonthDate->format('Ym');
$currentMonthDate->modify('first day');
echo $currentMonthDate->format('Ym');
201408/201408行
我在运行PHP 5.2的生产服务器上发现了这种行为,所以我认为这是一个古老的bug,但它发生在PHP 5.3(http://phptester.net/)和5.5测试服务器上。
如果我在PHP 5.2中使用“本月的第一天”,则会发生相同的行为。 在PHP 5.5“本月的第一天”按预期工作。
“第一天” - 是否有bug? 以及如何在PHP 5.2中获得“本月的第一天”而不会在string
和date
之间进行奇怪的转换?
看起来这个问题是一个文档问题。
从Derick的错误#51096:“第一天”和“最后一天”应该是“+1天”和“-1天”。
文档应该更新以反映这种行为,因为目前“第一/最后一天”部分说“不”是可选的。
UPDATE
文档现在已修复。 那么' of'?
不再是可选的。
'first day of'
设置当前月份的第一天。