Расчет списка дат недели, начиная с указанной даты - PullRequest
1 голос
/ 21 июня 2011

Мне нужно получить список дат для данной недели, когда указана одна дата этой недели и начальный день. Начальный день может быть понедельник, воскресенье и т. Д.

Ответы [ 2 ]

1 голос
/ 21 июня 2011

Вот способ, который, я думаю, работает, но не уверен, что это самый эффективный способ.$ weekStart должен быть установлен на день, который вы считаете первым в неделе (0 = воскресенье, 1 = понедельник и т. д.), а $ date - дата ввода.

$weekStart = 0;
$date = '2011-06-1';

$timestamp = strtotime($date);

$dayOfWeek = date('N', $timestamp);

$startDate = mktime(0,0,0, date('n', $timestamp), date('j', $timestamp) - $dayOfWeek + $weekStart, date('Y', $timestamp));
$endDate = mktime(0,0,0, date('n', $timestamp), date('j', $timestamp) - $dayOfWeek + 6 + $weekStart, date('Y', $timestamp));

echo 'Week runs from ' . date('Y-m-d', $startDate) . ' to ' . date('Y-m-d', $endDate);
0 голосов
/ 25 июля 2013

Заменить $ dayOfWeek = date ('N', $ timestamp); с $ dayOfWeek = date ('w', $ timestamp); потому что, если использовать воскресенье, он возвращал неправильные даты недели. Протестировано с использованием $ date = '2013-07-28'.

$weekStart = 0;
$date = '2011-06-1';

$timestamp = strtotime($date);

$dayOfWeek = date('w', $timestamp);

$startDate = mktime(0,0,0, date('n', $timestamp), date('j', $timestamp) - $dayOfWeek + $weekStart, date('Y', $timestamp));
$endDate = mktime(0,0,0, date('n', $timestamp), date('j', $timestamp) - $dayOfWeek + 6 + $weekStart, date('Y', $timestamp));

echo 'Week runs from ' . date('Y-m-d', $startDate) . ' to ' . date('Y-m-d', $endDate);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...