2016-02-24 4 views
0

Есть ли простой способ получить на прошлой неделе, скажем, понедельник? Если сегодня вторник, я не хочу вчерашнего понедельника. Скорее, я хочу понедельник 8 дней назад (понедельник на прошлой неделе). Тогда я хочу воскресное воскресенье в понедельник. В основном, я пытаюсь получить диапазон дат на прошлой неделе, с понедельника по воскресенье.PHP: как получить день на прошлой неделе?

Это не всегда работает правильно:

date('Y-m-d', strtotime('last Monday')

предложения?

+0

Если я понимаю ваш вопрос, вы хотите проигнорировать текущую неделю и получить будний день за последнюю неделю? – Kayla

+0

Да, это правильно. 'strtotime ('last week Monday')' также не кажется надежным. – StackOverflowNewbie

+0

@StackOverflowNewbie: хорошо, неделя обычно получалась 7 дней, поэтому вы можете попробовать сделать какую-то математику на отметке времени на основе этого предположения ... –

ответ

3

Вы можете использовать «на этой неделе» Формат:

$monday = strtotime('this week', strtotime('7 days ago')); 
$sunday = strtotime('+ 6 days', $monday ); 

eval.in demo

«На этой неделе» возвращается понедельник предыдущей недели, затем - добавление 6 дней - Вы получаете понедельника относительно недели.

+0

Это будет работать независимо от того, в какой день он выполняется? – StackOverflowNewbie

+0

есть. => now() - '7 дней назад' – fusion3k

+0

, если вы хотите предыдущую неделю пользовательской даты (например, 2015-03-01), замените' strtotime ('7 дней назад') 'на' strtotime ('7 дней назад', strtotime ('2015-03-01')) ' – fusion3k

1

Функция strtotime принимает текущую дату в качестве параметра.

http://php.net/manual/en/function.strtotime.php

Просто передайте в strtotime('last Sunday') в качестве параметра, чтобы получить будний день последней полной недели.

$beginning_of_week = strtotime('last Sunday'); 
$result = date('Y-m-d', strtotime('last Monday', $beginning_of_week)); 

echo $result; 
+0

Проблема с этим сама по себе - если вы запустите ее в воскресенье, она будет использовать предыдущее воскресенье, таким образом, возвращаясь 2 понедельника назад – Devon

+0

Это то, что мне нужно. – StackOverflowNewbie

+0

Если сегодня воскресенье, я не хочу дату последнего понедельника. Я хочу дату понедельника до последнего понедельника, а затем в воскресенье. – StackOverflowNewbie

Смежные вопросы