ID: 40271
Updated by: [EMAIL PROTECTED]
Reported By: slomo at sonarkollektiv dot de
-Status: Open
+Status: Bogus
Bug Type: Date/time related
Operating System: Mac OS X 10.4.8
PHP Version: 5.2.0
New Comment:
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.
Previous Comments:
------------------------------------------------------------------------
[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.
------------------------------------------------------------------------
[2007-01-29 12:01:58] [EMAIL PROTECTED]
Could you please just paste something like this:
code :
strftime("<something>")
actual result:
<something you can actually see>
expected result:
<something you expected to see>
I really don't think those functions, cycles and HTML output are
required to demonstrate a problem with strftime().
------------------------------------------------------------------------
[2007-01-29 11:55:33] slomo at sonarkollektiv dot de
My "Reproduce code" was quite complete. Here it is again,
this time it starts with <?php and ends with ?> :-)
I expect: using strtotime("last monday") should behave
always the same. If you run my code you will see that it
differs depending on the given date. My code is not complex,
so I hope you get the point very soon.
This "Day of week items" are a little bit confusing, because
if you have e.g. a $date for a monday and state strtotime
("$date last monday"), you get $date. I assume this is
correct.
Anyway I would think it's just my fault if my function would
be "off 1 week" for the whole year if the date is a monday
every time. But this happens only for the first week, in any
other week the result is like I learned strtotime() is doing
it.
Can you follow?
<?php
function MondayOfWeek($year, $week) {
return strtotime("$year-01-04 UTC + " . ($week-1) . '
week last monday');
}
for ($y = 1998; $y < 2012; $y++) {
for ($w = 1; $w < 53; $w++) {
$start = MondayOfWeek($y, $w);
$end = strtotime("+6 day", $start);
echo "KW $w/$y: " . gmstrftime('%A, %x %X', $start)
. ' - ' . gmstrftime('%A, %x %X', $end) . ' - reverse check
(week/year): ' . gmstrftime('%V/%G', $start) . "<br />\n";
if ($w != gmstrftime('%V', $start) || $y !=
gmstrftime('%G', $start)) {
echo '<span style="color: red;">Oops,
EXCEPTIONAL ERROR!</span>' . "<br />\n";
}
}
echo "<hr>\n";
}
?>
best regards,
slomo
------------------------------------------------------------------------
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