PX : code

WeekNumber by Stefan Röhrich
Download this code


<?php
/* weeknumber.php3

   (int) get_week_number($timestamp)

   Week number of year with Monday as first day of the week
   (1...53). If the week containing January 1 has four or more days
   in the new year, then it is considered week 1; otherwise, it is
   week 53 of the previous year, and the next week is week 1. (See the
   ISO 8601: 1988 standard.)

   Adapted from GNU sh-utils for PHP3 by Stefan Röhrich, sr@linux.de,
   http://home.pages.de/~sr/.

*/

function is_leap_year($year) {
        if (((
$year 4) == and ($year 100)!=0) or ($year 400)==0) {
                return 
1;
        } else {
                return 
0;
        }
}

/*
#define ISO_WEEK_START_WDAY 1 // Monday
#define ISO_WEEK1_WDAY 4 // Thursday
#define YDAY_MINIMUM (-366)
  int big_enough_multiple_of_7 = (-YDAY_MINIMUM / 7 + 2) * 7;
  return (yday
          - (yday - wday + ISO_WEEK1_WDAY + big_enough_multiple_of_7) % 7
          + ISO_WEEK1_WDAY - ISO_WEEK_START_WDAY);
*/

function iso_week_days($yday$wday) {
        return 
$yday - (($yday $wday 382) % 7) + 3;
}

function 
get_week_number($timestamp) {

        
$d getdate($timestamp);

        
$days iso_week_days($d["yday"], $d["wday"]);

        if (
$days 0) {
                
$d["yday"] += 365 is_leap_year(--$d["year"]);
                
$days iso_week_days($d["yday"], $d["wday"]);
        } else {
                
$d["yday"] -= 365 is_leap_year($d["year"]);
                
$d2 iso_week_days($d["yday"], $d["wday"]);
                if (
<= $d2) {
                        
/* $d["year"]++; */
                        
$days $d2;
                }
        }

        return (int)(
$days 7) + 1;
}
?>


Comments or questions?
PX is running PHP 5.2.17
Thanks to Miranda Productions for hosting and bandwidth.
Use of any code from PX is at your own risk.