Bug #18266 Updated: Wrong week output from date("W")

From: Date: Mon, 22 Jul 2002 19:24:18 +0000
Subject: Bug #18266 Updated: Wrong week output from date("W")
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-14786@lists.php.net to get a copy of this message
ID: 18266 Updated by: tmus@get2net.dk Reported By: srabol@mail.tele.dk Status: Bogus Bug Type: Date/time related Operating System: W2K PHP Version: 4.2.1 New Comment: There is indeed a problem with the date('W'...) function in PHP 4.2.1... The ISO standard says that week 1 is the week that has the first thursday of the gregorian year, making the last week the week with the last thursday of the year (more/better info here http://www.merlyn.demon.co.uk/weekinfo.htm#WkNo ) But anyway, try making the following test... print date("r (W)",1041289200)."<br>\n"; // Tue, 31 Dec 2002 00:00:00 +0100 (53) print date("r (W)",1041375600)."<br>\n"; // Wed, 1 Jan 2003 00:00:00 +0100 (1) So any way You decide to put it, at least the same week should not have two different numbers depending on the timestamp. Previous Comments: ------------------------------------------------------------------------ [2002-07-11 04:34:59] hholzgra@php.net maybe you should use strftime() instead of date(), it has support for different week counting schemes (but be warned that PHP strftime() completely relies on the systems c library implementation of strftime() for parsing the format string, and especially windows is known for not supporting all of the documented format characters ...) from http://php.net/strftime : %U - week number of the current year as a decimal number, starting with the first Sunday as the first day of the first week %V - The ISO 8601:1988 week number of the current year as a decimal number, range 01 to 53, where week 1 is the first week that has at least 4 days in the current year, and with Monday as the first day of the week. (Use %G or %g for the year component that corresponds to the week number for the specified timestamp.) %W - week number of the current year as a decimal number, starting with the first Monday as the first day of the first week ------------------------------------------------------------------------ [2002-07-10 17:18:05] srabol@mail.tele.dk Hi Thanks for the quick answer. Would you be so kind and point me to the definition of the ISO date/time specification. print date("d-m-Y",mktime(0,0,0,12,30,2002)) . " Week : " . date("W",mktime(0,0,0,12,30,2002)) . "<br>"; also state that the week is 53. I've just looked in 2 different 'paper' calanders and both of them says that Dec. 30 2002 and Dec. 31 2002 is week 1 OFF-TOPIC, sorry My problem is that I need to know when a specific week in a year starts and ends. ------------------------------------------------------------------------ [2002-07-10 16:54:01] rasmus@php.net According to the ISO date/time standards, Dec.31 2002 is indeed in week 53, so the output is correct. ------------------------------------------------------------------------ [2002-07-10 16:46:19] srabol@mail.tele.dk print date("d-m-Y",mktime(0,0,0,12,31,2002)) . " Week : " . date("W",mktime(0,0,0,12,31,2002)) . "<br>"; The above line give this result: 31-12-2002 Week : 53 And according to my calendar there is no week 53 in year 2002 ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=18266&edit=1

« previous php.bugs (#14786) next »