这是一个非常奇怪的行为,但我找到了一些解决方案来获得预期的结果。之所以这么做是因为DateTime
对象上缺少一年。
溶液#1(https://3v4l.org/hIA89)
<?php
$datetime = new DateTime('2016-01-01', new DateTimeZone('Europe/Paris'));
var_dump($datetime->modify('first day of april'));
var_dump($datetime->modify('first day of may'));
?>
溶液#2(https://3v4l.org/PDXM3)
<?php
var_dump(new DateTime('first day of april 2016', new DateTimeZone('Europe/Paris')));
var_dump(new DateTime('first day of may 2016', new DateTimeZone('Europe/Paris')));
?>
溶液#3(https://3v4l.org/pBH0n)
<?php
var_dump(new DateTime('1 april', new DateTimeZone('Europe/Paris')));
var_dump(new DateTime('1st april', new DateTimeZone('Europe/Paris')));
var_dump(new DateTime('1 may', new DateTimeZone('Europe/Paris')));
var_dump(new DateTime('1st may', new DateTimeZone('Europe/Paris')));
?>
THX到@Glavic
您选中此项,因为印度标准时间? – SunUser
这很奇怪:https://3v4l.org/GteBt - 在PHP 5.5.24 - 5.5.33,5.6.8 - 7.0.5它正在工作,但其他版本得到错误的日期。 –
你可以做同样的,并告诉我:http://imgur.com/dI5IvMH –