function getWeekStart($year, $weekOrder){
$weekDay = date('N', mktime(0,0,0, 1, 1, intval($year)));
$diff = (8 - $weekDay) < 7 ? (8 - $weekDay) : 0;
$days = ($weekOrder - 1) * 7 + 1;
if (($days + $diff) < 31){
return $year . '-01-' . sprintf('%02s', ($days + $diff));
}
for ($i=1; $i<=12; $i++){
$tDays = daysOfMonth($year, $i);
if (($days + $diff) < $tDays){
return $year . '-' . sprintf('%02s',$i) . '-' . sprintf('%02s',
($tDays + $diff));
}
$days -= $tDays;
if ($days < daysOfMonth($year, $i + 1)){
if (($days + $diff) > 0){
return $year . '-' . sprintf('%02s', ($i + 1)) . '-' .
sprintf('%02s', ($days + $diff));
} else {
return $year . '-' . sprintf('%02s', $i) . '-' . sprintf('%02s',
($days + $tDays + $diff));
}
}
}
}
function getWeekEnd($year, $weekOrder){
$weekDay = date('N', mktime(0,0,0, 1, 1, intval($year)));
$diff = (8 - $weekDay) < 7 ? (8 - $weekDay) : 0;
$days = $weekOrder * 7;
if (($days + $diff) < 31){
return $year . '-01-' . sprintf('%02s', ($days + $diff));
}
for ($i=1; $i<=12; $i++){
$tDays = daysOfMonth($year, $i);
if (($days + $diff) < $tDays){
return $year . '-' . sprintf('%02s',$i) . '-' . sprintf('%02s',
($tDays + $diff));
}
$days -= $tDays;
if ($days < daysOfMonth($year, $i + 1)){
if (($days + $diff) > 0){
return $year . '-' . sprintf('%02s', ($i + 1)) . '-' .
sprintf('%02s', ($days + $diff));
} else {
return $year . '-' . sprintf('%02s', $i) . '-' . sprintf('%02s',
($days + $tDays + $diff));
}
}
}
}
function daysOfMonth($year,$month){
switch($month){
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12: return 31;
case 4:
case 6:
case 9:
case 11:
case 13: return 30;
case 2:
if ( $year/400 == 0 || ($year/4 == 0 && $year/100 != 0) ){
return 29;
} else {
return 28;
}
default: return 0;
}
}