Bug #33957 [Com]: gmdate('W')/date('W') sometimes returns wrong week number.

From: Date: Mon, 14 Jun 2010 07:03:35 +0000
Subject: Bug #33957 [Com]: gmdate('W')/date('W') sometimes returns wrong week number.
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-151463@lists.php.net to get a copy of this message
Edit report at http://bugs.php.net/bug.php?id=33957&edit=1

 ID:               33957
 Comment by:       paul at stunning-stuff 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

 New Comment:

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


Previous Comments:
------------------------------------------------------------------------
[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] derick@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.



------------------------------------------------------------------------
[2005-08-02 16:45:08] paul at stunning-stuff dot com

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

------------------------------------------------------------------------


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/bug.php?id=33957


-- 
Edit this bug report at http://bugs.php.net/bug.php?id=33957&edit=1


Thread (11 messages)

« previous php.bugs (#151463) next »