ID: 40271 Updated by: [EMAIL PROTECTED] Reported By: slomo at sonarkollektiv dot de Status: Bogus Bug Type: Date/time related Operating System: Mac OS X 10.4.8 PHP Version: 5.2.0 New Comment:
It should be "1999-01-04 UTC + **0** week last monday" means "1999-01-04 minus 1 week" (because 1999-01-04 is monday). Previous Comments: ------------------------------------------------------------------------ [2007-01-29 14:38:20] slomo at sonarkollektiv dot de > Your expectation is wrong. > 1999-01-04 is Monday, so "last monday" for 1999-01-04 is "1999-01-04 > minus 1 week" and "last monday" 1999-01-11 is 1999-01-04. I still do not agree. I expect: code : strtotime("1999-01-04 UTC + 1 week last monday"); strtotime("1999-01-11 UTC + 0 week last monday"); 1999-01-04 is monday 1999-01-11 is monday too If you say: "1999-01-04 UTC + 1 week last monday" means "1999-01-04 minus 1 week" (because 1999-01-04 is monday) you forgot to mention the "+ 1 week" in the expression, this makes "1999-01-04 minus 1 week plus 1 week" for me = 1999-01-04 , or? following you explanation "1999-01-11 UTC + 0 week last monday" then means "1999-01-11 minus 1 week" (because 1999-01-11 is monday too) and again we have to consider "+ 0 week", this makes "1999-01-11 minus 1 week plus 0 week" for me = 1999-01-04 , or do I miss something? Next test: code : strtotime("1999-01-04 UTC + 0 week last monday"); strtotime("1999-01-04 UTC + 1 week last monday"); strtotime("1999-01-04 UTC + 2 week last monday"); actual result: 914803200 916012800 916617600 expected result: at least always the same gap (604800 is a week), but it differs > See previous explanation. > No bug here. This answer is even more confusing for me. 1999-01-04 is monday, correct? no matter how you turn it, either "1999-01-04 last monday" = 1998-12-28 + X weeks = something with always the same gap or "1999-01-04" + X weeks = a date, and a monday too -> now apply "last monday" = something with always the same gap (we are working with a monday, no matter how you turn it, so I expect strtotime() to behave alike, the only differing value is the "+ X weeks") I still expect "something with always the same gap". Sorry for my stubbornness :( At the moment I see that strtotime("1999-01-11 UTC last monday + 1 week") and strtotime("1999-01-11 UTC + 1 week last monday") are giving different results ... now I give up :) Thank you for your support even more for the neat solution using strtotime('2007W011'). ------------------------------------------------------------------------ [2007-01-29 13:25:17] [EMAIL PROTECTED] code : >strtotime('1999-01-04 UTC + 1 week last monday'); >strtotime('1999-01-11 UTC + 0 week last monday'); >actual result: >916012800 >915408000 >expected result: >at least the same value Your expectation is wrong. 1999-01-04 is Monday, so "last monday" for 1999-01-04 is "1999-01-04 minus 1 week" and "last monday" 1999-01-11 is 1999-01-04. >expected result: >at least always the same gap (604800 is a week), but it >differs See previous explanation. No bug here. ------------------------------------------------------------------------ [2007-01-29 13:20:01] slomo at sonarkollektiv dot de Just to point out why I think somethings weird, compare the previous code and result to this one. code: strtotime('2000-01-04 UTC + 1 week last monday'); strtotime('2000-01-11 UTC + 0 week last monday'); actual result: 947462400 947462400 expected result: 947462400 947462400 > same value, fine. And the same for code: strtotime('2000-01-04 UTC + 0 week last monday'); strtotime('2000-01-04 UTC + 1 week last monday'); strtotime('2000-01-04 UTC + 2 week last monday'); actual result: 946857600 947462400 948067200 expected result: 946857600 947462400 948067200 > always the same gap (604800 is a week), fine. ------------------------------------------------------------------------ [2007-01-29 12:22:42] slomo at sonarkollektiv dot de code : strtotime('1999-01-04 UTC + 1 week last monday'); strtotime('1999-01-11 UTC + 0 week last monday'); actual result: 916012800 915408000 expected result: at least the same value Another example code : strtotime('1999-01-04 UTC + 0 week last monday'); strtotime('1999-01-04 UTC + 1 week last monday'); strtotime('1999-01-04 UTC + 2 week last monday'); actual result: 914803200 916012800 916617600 expected result: at least always the same gap (604800 is a week), but it differs ------------------------------------------------------------------------ [2007-01-29 12:02:37] slomo at sonarkollektiv dot de thanks [EMAIL PROTECTED], that's brilliant :) and it seems to be bug free. I still think my code produced a bug in PHP and I do not get why this happens. ------------------------------------------------------------------------ The remainder of the comments for this report are too long. To view the rest of the comments, please view the bug report online at http://bugs.php.net/40271 -- Edit this bug report at http://bugs.php.net/?id=40271&edit=1