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] [email protected]
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