Я пишу программный код для отображения числа недель между двумя датами. Я также хочу показать даты между номером недели. Я написал следующий код в соответствии с кодами примеров из переполнения стека. (here & & here)PHP Weeknumber, дата начала и дата окончания
function getStartAndEndDate($week, $year)
{
$time = strtotime("1 January $year", time());
$day = date('w', $time);
$time += ((7*$week)+1-$day)*24*3600;
$return[0] = date('dMY', $time);
$time += 6*24*3600;
$return[1] = date('dMY', $time);
return $return;
}
$startTime = strtotime('2013-04-01');
$endTime = strtotime('2013-05-03');
$weeks = array();
while ($startTime < $endTime)
{
$weeks[] = date('W', $startTime);
$startTime += strtotime('+1 week', 0);
}
echo count($weeks)."<br/>";
$year="2013";
foreach ($weeks as $key => $w)
{
echo "Week Number:".$w."--";
$return=getStartAndEndDate($w,$year);
$r0=$return[0];
$r1=$return[1];
echo "Start-".$r0."-End-".$r1."<br/>";
}
Но выход неправильно. Выходные показывает:
Неделя Количество: 14 - Пуско-07Apr2013-End-13Apr2013
Неделя Количество: 14 - Пуско-07Apr2013-End-13Apr2013
номер недели : 15 - Пуско-14Apr2013-End-20Apr2013
Неделя Количество: 16 - Пуско-21Apr2013-End-27Apr2013
номер недели : 17 - Start-28Apr2013-End-04May2013
14-я неделя начинается с 31Mar2013 до 6Apr2013. Я не мог понять, в чем проблема. Любая помощь должна быть оценена!
Я подозреваю, что это проблема часовых поясов, но я не могу воспроизвести его с любым часовым поясом, я попытался. – Barmar
Да, вероятно, проблема с часовым поясом. Но мне интересно, как я могу написать код! – NewPHP
Вызывает ли 'date_default_timezone_set ('UTC')' исправление? – Barmar