Edit report at https://bugs.php.net/bug.php?id=33957&edit=1
ID: 33957 Comment by: tchorbadjiiski at gmail dot com Reported by: paul at stunning-stuff dot com Summary: gmdate('W')/date('W') sometimes returns wrong week number. Status: Closed Type: Bug Package: Date/time related Operating System: * PHP Version: 5CVS-2005-08-02 Assigned To: derick Block user comment: N Private report: N New Comment: Hello, it seems that this bug is still alive:-). My tries to calculate the week for timestamps belonging to 31 December 2012 are returning the wrong result as can be seen here: date('Y/W', 1356908400) => 2012/01 date('Y/m/d H:i:s', 1356908400) => 2012/12/31 00:00:00 Calls with timestamps belonging to 30/12/12 or 01/01/13 result in the correct output. Expected behavior (for me reading the ISO 8601 doc) would be to have the year 2013 in the first call to the date function. I'm using debian wheezy (testing) with the following php version: PHP 5.4.4-13 (cli) (built: Feb 19 2013 10:54:11) Thanks and cheers, Angel Tchorbadjiiski Previous Comments: ------------------------------------------------------------------------ [2010-06-14 09:03:34] paul at stunning-stuff dot com 23 is the correct week number according to timeanddate.com. Remember the week number is determined using ISO8601 rules!! Btw, a snapshot release is an 'overnight' release of the latest version of a software package. Google will tell you more. -Paul ------------------------------------------------------------------------ [2010-06-13 13:07:20] cgullz at gmail dot com Hi, I have the same problem using date('W') to show week number of 13/June/2010 which should be 25, but it displays 23. I use php 5.2.6 through WAMP2. This is the first time I hear about snapshot so not sure what am I suppose to do to fix this problem. Can someone please explain to me what should I do? Thank you, Sigal ------------------------------------------------------------------------ [2010-05-19 20:56:04] paul at stunning-stuff dot com Hi Warwick, The 1st week of a year does not necessarily start on the first of January under the rules of ISO8601. I checked your examples and they seemed fine. Please read up on ISO8601. -Paul ------------------------------------------------------------------------ [2010-05-19 04:06:11] wps at wwe dot com date('W', $timestamp) fails to return "01" for some January 1st years on PHP version 5.3.2 and 5.2.8 on CentOS and Windows. $year = 1970; $month = 1; $day = 1; while ($year <= 2028) { $timestamp = mktime(12, 0, 0, $month, $day, $year); print $year . " :: " . date('W', $timestamp). " :: " . date('D', $timestamp) . "\n</br>"; $year++; } Expect 01 for every year but instead get 1970 :: 01 :: Thu 1971 :: 53 :: Fri 1972 :: 52 :: Sat 1973 :: 01 :: Mon 1974 :: 01 :: Tue 1975 :: 01 :: Wed 1976 :: 01 :: Thu 1977 :: 53 :: Sat 1978 :: 52 :: Sun ... 2020 :: 01 :: Wed 2021 :: 53 :: Fri 2022 :: 52 :: Sat 2023 :: 52 :: Sun 2024 :: 01 :: Mon 2025 :: 01 :: Wed 2026 :: 01 :: Thu 2027 :: 53 :: Fri 2028 :: 52 :: Sat 1st falling on Friday returns 53 1st falling on Saturday/Sunday return 52 Checked dates using http://www.tuxgraphics.org/toolbox/cal_year.html Warwick Shaw ------------------------------------------------------------------------ [2005-08-31 16:31:52] der...@php.net This bug has been fixed in CVS. Snapshots of the sources are packaged every three hours; this change will be in the next snapshot. You can grab the snapshot at http://snaps.php.net/. Thank you for the report, and for helping us make PHP better. ------------------------------------------------------------------------ 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 https://bugs.php.net/bug.php?id=33957 -- Edit this bug report at https://bugs.php.net/bug.php?id=33957&edit=1