|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
[2001-06-19 05:41 UTC] martin at humany dot com
i live in sweden, where displaying weeknumbers in calendars of any sort is common. the following code does the work, tho i'd be very happy if it could be supported to be returned from the date() function.
the algorithm is (mondaynumber+7)/7
where mondaynumber is the day of the year of the monday of the current year
switch(date("w")) {
case 1: $daysub=0; break;
case 2: $daysub=1; break;
case 3: $daysub=2; break;
case 4: $daysub=3; break;
case 5: $daysub=4; break;
case 6: $daysub=5; break;
case 0: $daysub=6; break;
}
$weeknumber=(date ("z", mktime(0,0,0, date("m"), date("d")-$daysub, date("Y")) )+7)/7;
PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
|
|||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Thu Nov 06 00:00:02 2025 UTC |
i live in sweden, where displaying weeknumbers in calendars of any sort is common. the following code does the work, tho i'd be very happy if it could be supported to be returned from the date() function. switch(date("w",mktime(0,0,0,$mon,$daycnt+1,$year))) { case 1: $daysub=0; break; case 2: $daysub=1; break; case 3: $daysub=2; break; case 4: $daysub=3; break; case 5: $daysub=4; break; case 6: $daysub=5; break; case 0: $daysub=6; break; } $weeknumber=round((date("z", mktime(0,0,0, date("m"),date("d")+1-$daysub,date("Y")))+7)/7); if($weeknumber==53) { //some years have 53 weeks & some 52 //so we check next weeks weeknumber, if its 1 this is week 53, otherwise, this is week 1. switch(date("w",mktime(0,0,0,date("m"),date("d")+8,date("Y")))) { case 1: $daysub=0; break; case 2: $daysub=1; break; case 3: $daysub=2; break; case 4: $daysub=3; break; case 5: $daysub=4; break; case 6: $daysub=5; break; case 0: $daysub=6; break; } $tmpweeknumber=round( (date("z", mktime(0,0,0, date("m"), date("d")+8-$daysub, date("Y")))+7)/7); if($tmpweeknumber==1) $weeknumber=53; else $weeknumber=1; }date('W') has been added to CVS. It returns the ISO 8601 week number (0-53). Basically, Monday is the first day of the week, and week #1 of the year is the week that contains January 4. - Colin