ID: 33957 User updated by: paul at stunning-stuff dot com Reported By: paul at stunning-stuff dot com Status: Assigned Bug Type: Date/time related Operating System: Windows XP Pro PHP Version: 5.1.0b3 Assigned To: derick New Comment:
Thanks for your quick reply and thanks for doing such a great job on PHP. You dev's really make this the best open source language today. I hope you are able to solve this problem (I'm sure you will). One more note though: This problem should reoccur every 28 years before and after 1992. This might help you in your testing. Thanks, Paul van der Maas --- www.stunning-stuff.com Previous Comments: ------------------------------------------------------------------------ [2005-08-02 16:22:09] [EMAIL PROTECTED] Indeed a bug, will have a look at it - thanks for the reproducable case. ------------------------------------------------------------------------ [2005-08-02 16:19:09] paul at stunning-stuff dot com Here is some example code to reproduce the problem: <?php $timestamp = gmmktime(12, 0, 0, 12, 28, 1992); echo 'Week number for ' . gmdate('D M d, Y H:i:s', $timestamp) . ': ' . gmdate('W', $timestamp) . '<br>'; $timestamp = gmmktime(12, 0, 0, 12, 29, 1992); echo 'Week number for ' . gmdate('D M d, Y H:i:s', $timestamp) . ': ' . gmdate('W', $timestamp) . '<br>'; $timestamp = gmmktime(12, 0, 0, 12, 30, 1992); echo 'Week number for ' . gmdate('D M d, Y H:i:s', $timestamp) . ': ' . gmdate('W', $timestamp) . '<br>'; $timestamp = gmmktime(12, 0, 0, 12, 31, 1992); echo 'Week number for ' . gmdate('D M d, Y H:i:s', $timestamp) . ': ' . gmdate('W', $timestamp) . '<br>'; $timestamp = gmmktime(12, 0, 0, 12, 28, 2020); echo 'Week number for ' . gmdate('D M d, Y H:i:s', $timestamp) . ': ' . gmdate('W', $timestamp) . '<br>'; $timestamp = gmmktime(12, 0, 0, 12, 29, 2020); echo 'Week number for ' . gmdate('D M d, Y H:i:s', $timestamp) . ': ' . gmdate('W', $timestamp) . '<br>'; $timestamp = gmmktime(12, 0, 0, 12, 30, 2020); echo 'Week number for ' . gmdate('D M d, Y H:i:s', $timestamp) . ': ' . gmdate('W', $timestamp) . '<br>'; $timestamp = gmmktime(12, 0, 0, 12, 31, 2020); echo 'Week number for ' . gmdate('D M d, Y H:i:s', $timestamp) . ': ' . gmdate('W', $timestamp) . '<br>'; ?> Expected result: Week number for Mon Dec 28, 1992 12:00:00: 53 Week number for Tue Dec 29, 1992 12:00:00: 53 Week number for Wed Dec 30, 1992 12:00:00: 53 Week number for Thu Dec 31, 1992 12:00:00: 53 Week number for Mon Dec 28, 2020 12:00:00: 53 Week number for Tue Dec 29, 2020 12:00:00: 53 Week number for Wed Dec 30, 2020 12:00:00: 53 Week number for Thu Dec 31, 2020 12:00:00: 53 Actual result: Week number for Mon Dec 28, 1992 12:00:00: 1 Week number for Tue Dec 29, 1992 12:00:00: 1 Week number for Wed Dec 30, 1992 12:00:00: 1 Week number for Thu Dec 31, 1992 12:00:00: 1 Week number for Mon Dec 28, 2020 12:00:00: 1 Week number for Tue Dec 29, 2020 12:00:00: 1 Week number for Wed Dec 30, 2020 12:00:00: 1 Week number for Thu Dec 31, 2020 12:00:00: 1 Check http://www.timeanddate.com/calendar/custom.html?year=1992&month=12&typ=1&display=1&wno=1 and http://www.timeanddate.com/calendar/custom.html?year=2020&month=12&typ=1&display=1&wno=1 to see these expected results confirmed. Sorry for the bulky post, but this way there is no room for misinterpretation. Thanks, Paul van der Maas --- www.stunning-stuff.com ------------------------------------------------------------------------ [2005-08-02 07:55:12] [EMAIL PROTECTED] Thank you for this bug report. To properly diagnose the problem, we need a short but complete example script to be able to reproduce this bug ourselves. A proper reproducing script starts with <?php and ends with ?>, is max. 10-20 lines long and does not require any external resources such as databases, etc. If possible, make the script source available online and provide an URL to it here. Try to avoid embedding huge scripts into the report. ------------------------------------------------------------------------ [2005-08-02 03:27:51] paul at stunning-stuff dot com Description: ------------ Hi, While I was writing my own getWeekNumber method I discovered gmdate('W') and date('W') both return incorrect results for the year 1992 and 2020. Both years end on a thursday and both are leap years. I'm guessing that this is exactly the reason they return incorrect results :). Expected result: The last 4 days in 1992 and 2020 belong to week 53 of those years according to ISO 8601 rules. Actual result: gmdate('W') and date('W') think the last 4 days of 1992 and 2020 belong to week 1 of the following year. I only had the time to test these two years, but I expect that PHP will return the incorrect week number for every leap year that ends with a thursday. Thanks, Paul van der Maas --- www.stunning-stuff.com ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=33957&edit=1