Получить диапазон дней недели - PullRequest
2 голосов
/ 27 марта 2012

У меня есть например:

$ week_number = '13';$ year = '2012';

13 неделя в 2012 году. Это диапазон дней от 26.03.2012 до 1.04.2012 .Как я могу получить и показать это с помощью PHP?

Ответы [ 2 ]

3 голосов
/ 27 марта 2012

Функция strtotime() понимает тонкую грамматику для описания времени.

<?php

date_default_timezone_set("America/Toronto");

$week_number = '13';
$year = '2012';

$epoch_start = strtotime($year . "0101 + " . $week_number . " weeks - 6 days");
$epoch_end   = strtotime($year . "0101 + " . $week_number . " weeks");

print "Start: " . strftime("%Y-%m-%d", $epoch_start) . "\n";
print "  End: " . strftime("%Y-%m-%d", $epoch_end) . "\n";

?>

Обратите внимание, что strtotime(), кажется, считает полных недель, начиная спо воскресеньямПоэтому 1 января 2011 года можно было бы считать «нулевой неделей» этого года.

YMMV.Соль по вкусу.

2 голосов
/ 27 марта 2012

Хм ... если у вас есть только номер недели и год, тогда это не так просто.Но вы можете использовать следующее:

<?php

$week = '13';
$year = '2012';

$firstDayOfYear = strtotime('01.01.'.$year);
$oneWeek = 7 * 24 * 60 * 60;
$dateStart = $firstDayOfYear + $oneWeek * ($week - 1);
$dateEnd = $dateStart + $oneWeek;

echo 'From: ' . date('d.m.Y', $dateStart) . '<br>';
echo 'To: ' . date('d.m.Y', $dateEnd) . '<br>'; 

?>

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...