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:00var_dump(date('Y-m-d H:i:s', strtotime('+1 weekday'))); // 2015-05-05
00:00:00
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
I think the best approach would be to open a bug under https://bugs.php.net/
since this does
not look like intended behavior.
Regards,
Stelian
On Mon, May 4, 2015 at 5:33 PM, Markus Fasselt markus.fasselt@gmail.com
wrote:
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:00var_dump(date('Y-m-d H:i:s', strtotime('+1 weekday'))); // 2015-05-05
00:00:00There 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
There is actually already a bug for about this:
https://bugs.php.net/bug.php?id=54909
I ran into this several months ago when I upgraded a project from 5.3.2
to 5.5 and found that in 5.3.6 the behavior had changed. I ended up
working around it in my code. It was definitely annoying but had we
upgraded PHP versions sooner I wouldn't have had any issue with this in
the time crunch I had.
Our unit tests around that code, while complex, became that much better
to actually account for the finer details of date/time.
- Dave
I think the best approach would be to open a bug under https://bugs.php.net/
since this does
not look like intended behavior.Regards,
StelianOn Mon, May 4, 2015 at 5:33 PM, Markus Fasselt markus.fasselt@gmail.com
wrote: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:00var_dump(date('Y-m-d H:i:s', strtotime('+1 weekday'))); // 2015-05-05
00:00:00There 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
Hi,
This indeed looks like a bug - Happy to have a look at it to fix in
timelib: https://github.com/derickr/timelib
cheers,
Derick
There is actually already a bug for about this:
https://bugs.php.net/bug.php?id=54909I ran into this several months ago when I upgraded a project from 5.3.2
to 5.5 and found that in 5.3.6 the behavior had changed. I ended up
working around it in my code. It was definitely annoying but had we
upgraded PHP versions sooner I wouldn't have had any issue with this in
the time crunch I had.Our unit tests around that code, while complex, became that much better
to actually account for the finer details of date/time.
- Dave
I think the best approach would be to open a bug under https://bugs.php.net/
since this does
not look like intended behavior.Regards,
StelianOn Mon, May 4, 2015 at 5:33 PM, Markus Fasselt markus.fasselt@gmail.com
wrote: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:00var_dump(date('Y-m-d H:i:s', strtotime('+1 weekday'))); // 2015-05-05
00:00:00There 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--
--
http://derickrethans.nl | http://xdebug.org
Like Xdebug? Consider a donation: http://xdebug.org/donate.php
twitter: @derickr and @xdebug
Posted with an email client that doesn't mangle email: alpine