Bug #78827 [Com]: Wrong timestamp

From: Date: Sat, 23 Nov 2019 13:56:31 +0000
Subject: Bug #78827 [Com]: Wrong timestamp
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-223872@lists.php.net to get a copy of this message
Edit report at https://bugs.php.net/bug.php?id=78827&edit=1 ID: 78827 Comment by: obreham at gmail dot com Reported by: obreham at gmail dot com Summary: Wrong timestamp Status: Open Type: Bug Package: Date/time related Operating System: Ubuntu 16.04.6 LTS PHP Version: 7.3.11 Block user comment: N Private report: N New Comment: No matter what 'last Sunday' means, when you add '7 day' to it, it should yield 1 more day when compared to adding '6 day' to it; not 8 days. I've been also looking at the documentation (https://www.php.net/manual/en/datetime.formats.relative.php), which gives the following caution: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ «Also observe that the "of" in "ordinal space dayname space 'of' " and "'last' space dayname space 'of' " does something special. [...] "'last' dayname" takes the last dayname from the current day. (Example: "last wed july 2008" means "2008-06-25"; "july 2008" first sets the current date to "2008-07-01" and then "last wed" moves to the previous Wednesday which is "2008-06-25").» ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ But that doesn't explain why 'last Sunday' means something different in 'last Sunday + 6 day' and 'last Sunday + 7 day'. Note that 'last Sunday + 6 day', calculated on a Sunday, should return the equivalent of 'yesterday' or 'last Saturday' (and it does). And 'last Sunday + 7 day', calculated on a Sunday, should return the equivalent of 'today'. It actually returns 'next Sunday'. Previous Comments: ------------------------------------------------------------------------ [2019-11-23 09:08:26] cmb@php.net Isn't that suppossed to be Sunday last week instead of `last Sunday`? ------------------------------------------------------------------------ [2019-11-17 21:22:48] 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) ------------------------------------------------------------------------ -- Edit this bug report at https://bugs.php.net/bug.php?id=78827&edit=1

« previous php.bugs (#223872) next »