Jeg bruger følgende til det timeregistreringssystem jeg har lavet for min arbejdsplads.
Som input tager den et år og en uge - den finder så et timestamp for mandagen i den uge. Resten af ugen er så plus det antal
sekunder der er i et døgn.
Listen som jeg får ud af systemet kan jeg så bruge til at blive manipuleret med date kommandoen.
Funktionen er en blanding af et eksempel på php.net plus lidt hjemmekoderi.
(den virker fint på Linux, men der er et problem med Windows som jeg ikke har haft tid/lyst til at orden - det skal sige at jeg
mener at der er et problem med Windows som server - som klient har det ikke nogen betydning)
MVH
Peter
(grunden til at kommentarene er på engelsk er at det er det officielle sprog i virksomheden)
/*
*Function Name:get_date_from_week
*
*Parameters: $year, $week
*
*Description: this function returns an array of timestamps for each day in a given week
*
*Returns: an array
*
*/
function get_date_from_week($year, $week){
$first_day = strtotime($year."-01-01");
$is_monday = date("w", $first_day) == 1;
$is_weekone = strftime("%V", $first_day) == 1;
if($is_weekone){
$week_one_start = $is_monday ? $first_day : strtotime("last monday", $first_day);
}
else {
$week_one_start = strtotime("next monday", $first_day);
}
$mon=$week_one_start+(3600*24*7*($week-1));
//here I create an array of timestamps (mon-sun) each is incremented by 86400 seconds (24 hrs. converted to seconds)
return array($mon,($mon+(1*86400)),($mon+(2*86400)),($mon+(3*86400)),($mon+(4*86400)),($mon+(5*86400)),($mon+(6*86400)));
}
|