Adding weekdays to DateTime resets the time
| From: | Markus Fasselt | Date: | Mon, 04 May 2015 15:33:24 +0000 |
| Subject: | Adding weekdays to DateTime resets the time | ||
| Groups: | php.internals | ||
| Request: | Send a blank email to internals+get-86108@lists.php.net to get a copy of this message | ||
Hi,
when I modify a DateTime object and add or subtract weekdays, it happens
that the current time is reset to 00:00:00.
This effect does not occur when I add days. I also experienced the same
behavior with strototime.
> <?php
>
> $a = new DateTime(strtotime('2015-05-04 17:22'));
> var_dump((string) $a->format('Y-m-d H:i:s')); // 2015-05-04 17:22:00
> $a->modify('+1 day');
> var_dump((string) $a->format('Y-m-d H:i:s')); // 2015-05-05 17:22:00
> $a->modify('+1 weekday');
> var_dump((string) $a->format('Y-m-d H:i:s')); 2015-05-06 00:00:00
>
> var_dump(date('Y-m-d H:i:s', strtotime('+1 weekday'))); // 2015-05-05
00:00:00
http://3v4l.org/554H4
There seems to be slighly different behavior between the different PHP
versions. strotime always had this behavior. DateTime::modify() worked
correct until PHP 5.3.5.
I don't know if this behavior was changed on purpose (I didn't find
something on it). If so, why? Otherwise I would suggest to fix this, as
it is really confusing.
Regards,
Markus