|  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #69786 strtotime troubles when subtracting days
Submitted: 2015-06-09 13:57 UTC Modified: 2022-05-20 13:14 UTC
Avg. Score:4.0 ± 1.0
Reproduced:1 of 1 (100.0%)
Same Version:1 (100.0%)
Same OS:1 (100.0%)
From: s dot rotondo90 at gmail dot com Assigned: derick (profile)
Status: Wont fix Package: Date/time related
PHP Version: 5.5.25 OS: Windows Server 2012 R2 Standard
Private report: No CVE-ID: None
Welcome back! If you're the original bug submitter, here's where you can edit the bug or add additional notes.
If this is not your bug, you can add a comment by following this link.
If this is your bug, but you forgot your password, you can retrieve your password here.
Bug Type:
From: s dot rotondo90 at gmail dot com
New email:
PHP Version: OS:


 [2015-06-09 13:57 UTC] s dot rotondo90 at gmail dot com
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:

Actual result:


Add a Patch

Pull Requests

Add a Pull Request


AllCommentsChangesGit/SVN commitsRelated reports
 [2015-06-10 12:04 UTC]
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-10 13:10 UTC] 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 13:36 UTC]
-Status: Open +Status: Assigned -Assigned To: +Assigned To: derick
 [2021-10-28 15:29 UTC]
Still behaves this way: <>.
 [2022-05-20 13:14 UTC]
-Status: Assigned +Status: Wont fix
 [2022-05-20 13:14 UTC]
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";
PHP Copyright © 2001-2023 The PHP Group
All rights reserved.
Last updated: Wed Mar 22 17:03:43 2023 UTC