PHP - функция Даты - находящий на предыдущей неделе

В моем приложении неделя определяется от 0:00:00 в понедельник до воскресного 23:59:59

Каждый раз, когда пользователь посещает мой сайт - я должен найти предыдущий недельный диапазон дат и показать ему результаты на основе этого. Это звучит простым, но я потерян.

Дать Вам сценарии - понедельник 1-го марта 0:00:00 к воскресенье 7-го марта 12:59:59 - неделя.

Теперь, когда пользователь посещает веб-сайт 8-го марта или 10-го марта или 12-го марта - на основе текущей даты я должен смочь получить на предыдущей неделе диапазон дат т.е. дату начала 1-го марта и дата окончания 7-го марта.

Но если бы пользователь посещает сайт, говорят 16-го марта - диапазон дат, в котором я нуждался бы, 8-го марта до 15-го марта.

Как я могу сделать это в PHP.Спасибо

5
задан hakre 30 May 2012 в 22:32
поделиться

4 ответа

Вы можете попробовать сделать это с помощью меток времени, но это становится беспорядочным при изменении часового пояса (например, CET -> CEST). Я бы использовал класс DateTime :

$d = new DateTime();
$weekday = $d->format('w');
$diff = 7 + ($weekday == 0 ? 6 : $weekday - 1); // Monday=0, Sunday=6
$d->modify("-$diff day");
echo $d->format('Y-m-d') . ' - ';
$d->modify('+6 day');
echo $d->format('Y-m-d');
8
ответ дан 18 December 2019 в 09:07
поделиться

Для этого есть пользовательская функция в документации PHP .

1
ответ дан 18 December 2019 в 09:07
поделиться
function get_week_start($year, $month, $day)
{
    $timestamp = mktime(0, 0, 0, $month, $day, $year);
    return date('F j Y', $timestamp = mktime(0, 0, 0, $month, date('d', $timestamp)-date('w', $timestamp), $year));
}

Возможно, вы могли бы добавить следующие 6 дней, и они у вас есть.

1
ответ дан 18 December 2019 в 09:07
поделиться

Здесь очень удобна функция strtotime :

$mondayStr = "last monday";
if (date('N') !== '1') {  // it's not Monday today
    $mondayStr .= " last week";
}

$monday = strtotime($mondayStr);
echo date('r', $monday);    // Mon, 22 Feb 2010 00:00:00 +1000

$sunday = strtotime('next monday', $monday) - 1;
echo date('r', $sunday);    // Sun, 28 Feb 2010 23:59:59 +1000
8
ответ дан 18 December 2019 в 09:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: