Jest to bardzo dziwne zachowanie, ale znalazłem kilka rozwiązań, aby uzyskać oczekiwane rezultaty. Powodem, dla którego to nie działa, jest brakujący rok na obiekcie DateTime
.
rozwiązanie # 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'));
?>
rozwiązanie # 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')));
?>
rozwiązanie # 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 do @Glavic
to sprawdzić w Indian Standardowy czas? – SunUser
To dziwne: https://3v4l.org/GteBt - w PHP 5.5.24 - 5.5.33, 5.6.8 - 7.0.5 działa, ale inne wersje mają złą datę. –
możesz zrobić to samo i pokazać: http://imgur.com/dI5IvMH –