Bug #69786 [Asn->Wfx]: strtotime troubles when subtracting days

From: Date: Fri, 20 May 2022 13:14:23 +0000
Subject: Bug #69786 [Asn->Wfx]: strtotime troubles when subtracting days
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-241556@lists.php.net to get a copy of this message
Edit report at https://bugs.php.net/bug.php?id=69786&edit=1

 ID:                 69786
 Updated by:         derick@php.net
 Reported by:        s dot rotondo90 at gmail dot com
 Summary:            strtotime troubles when subtracting days
-Status:             Assigned
+Status:             Wont fix
 Type:               Bug
 Package:            Date/time related
 Operating System:   Windows Server 2012 R2 Standard
 PHP Version:        5.5.25
 Assigned To:        derick
 Block user comment: N
 Private report:     N

 New Comment:

Due to ambiguities in the parser, this can not be fixed without re-doing the full parser
architecture. I am therefore closing this ticket, as there is a reasonable workaround (you can do
'next mon' instead), or with descriptive steps:

$d = (new DateTimeImmutable('2015-06-09'))->modify('next
tue')->modify('-1 day');
echo $d->format('d/m/Y'), "\n";


Previous Comments:
------------------------------------------------------------------------
[2021-10-28 15:29:07] cmb@php.net

Still behaves this way: <https://3v4l.org/9cApu>.

------------------------------------------------------------------------
[2015-06-10 13:10:26] s dot rotondo90 at gmail dot com

I used Tuesday because i saw that this happen when using the same day for the next week.

For example today is Wednesday and if i try this:
echo date('d/m/Y', strtotime('next wed -1 day'));

the output will be: 09/06/2015
The "next wed" seems to be ignored as you said.

But, if i try to do the opposite operation:
echo date('d/m/Y', strtotime('next wed +1 day'));

the output will be: 18/06/2015
This time "next wed" worked well.

------------------------------------------------------------------------
[2015-06-10 12:04:09] cmb@php.net

Hm, I'm not sure if that is supposed to work. Apparently 'next tue'
is simply ignored and only '-1 day' is calculated.

Anyhow, do you really mean 'next tue -1 day' instead of 'next
mon'? Both have, of course, different results on Mondays.

------------------------------------------------------------------------
[2015-06-09 13:57:32] s dot rotondo90 at gmail dot com

Description:
------------
When subtracting days from the next day of the week and today is the same day of the week, strtotime
use the current date instead.  

Test script:
---------------
// Today is 09/06/2015

echo date('d/m/Y', strtotime('next tue'));
echo date('d/m/Y', strtotime('next tue -1 day'));


Expected result:
----------------
16/06/2015
15/06/2015

Actual result:
--------------
16/06/2015
08/06/2015


------------------------------------------------------------------------



--
Edit this bug report at https://bugs.php.net/bug.php?id=69786&edit=1


Thread (6 messages)

« previous php.bugs (#241556) next »