|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
[2019-11-17 21:22 UTC] obreham at gmail dot com
Description: ------------ --- From manual page: https://php.net/function.strftime --- When adding a time interval to 'last Sunday' on a Sunday, you get an incorrect timestamp when interval is longer than a week. 'last Sunday' becomes 'this Sunday'. Test script: --------------- /* Example code was run on Sunday Nov 17, 2019 */ var_dump( $saturday = strtotime('last Saturday'), (strtotime('last Saturday + 1 day') - $saturday) / 86400, (strtotime('last Saturday + 2 day') - $saturday) / 86400, (strtotime('last Saturday + 3 day') - $saturday) / 86400, (strtotime('last Saturday + 4 day') - $saturday) / 86400, (strtotime('last Saturday + 5 day') - $saturday) / 86400, (strtotime('last Saturday + 6 day') - $saturday) / 86400, (strtotime('last Saturday + 7 day') - $saturday) / 86400, (strtotime('last Saturday + 8 day') - $saturday) / 86400, (strtotime('last Saturday + 9 day') - $saturday) / 86400, $sunday = strtotime('last Sunday'), (strtotime('last Sunday + 1 day') - $sunday) / 86400, (strtotime('last Sunday + 2 day') - $sunday) / 86400, (strtotime('last Sunday + 3 day') - $sunday) / 86400, (strtotime('last Sunday + 4 day') - $sunday) / 86400, (strtotime('last Sunday + 5 day') - $sunday) / 86400, (strtotime('last Sunday + 6 day') - $sunday) / 86400, (strtotime('last Sunday + 7 day') - $sunday) / 86400, (strtotime('last Sunday + 8 day') - $sunday) / 86400, (strtotime('last Sunday + 9 day') - $sunday) / 86400, $monday = strtotime('last Monday'), (strtotime('last Monday + 1 day') - $monday) / 86400, (strtotime('last Monday + 2 day') - $monday) / 86400, (strtotime('last Monday + 3 day') - $monday) / 86400, (strtotime('last Monday + 4 day') - $monday) / 86400, (strtotime('last Monday + 5 day') - $monday) / 86400, (strtotime('last Monday + 6 day') - $monday) / 86400, (strtotime('last Monday + 7 day') - $monday) / 86400, (strtotime('last Monday + 8 day') - $monday) / 86400, (strtotime('last Monday + 9 day') - $monday) / 86400 ); Expected result: ---------------- int(1573880400) int(1) int(2) int(3) int(4) int(5) int(6) int(7) int(8) int(9) int(1573362000) int(1) int(2) int(3) int(4) int(5) int(6) int(7) int(8) int(9) int(1573448400) int(1) int(2) int(3) int(4) int(5) int(6) int(7) int(8) int(9) Actual result: -------------- int(1573880400) int(1) int(2) int(3) int(4) int(5) int(6) int(7) int(8) int(9) int(1573362000) int(1) int(2) int(3) int(4) int(5) int(6) int(14) int(15) int(16) int(1573448400) int(1) int(2) int(3) int(4) int(5) int(6) int(7) int(8) int(9) PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
|
|||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Tue Dec 16 15:00:02 2025 UTC |
I can confirm that this is a more general problem that occurs when using strtotime("last $x + $n") where $x is the current weekday, and $n >= 7. e.g running it with "last saturday + 7 days" on a saturday will yield the same results. Note that it only happens for positive numbers greater than or equal to 7, and does not occur for negative numbers. I'm looking through the source now to see if I can find anything relating to this.