strtotime () странность с первым и последним - PullRequest
1 голос
/ 06 июля 2010
$day = date('l', strtotime('07/25/2010'));
echo "$day ";
echo date("m/d/Y", strtotime("first $day"));

Это печатает Sunday 07/11/2010

$day = date('l', strtotime('07/25/2010'));
echo "$day ";
echo date("m/d/Y", strtotime("last $day"));

Это печатает Sunday 07/04/2010

Что здесь происходит?Разве это не должно быть 07/04/2010 и 25.07.2010 соответственно?

Ответы [ 2 ]

1 голос
/ 06 июля 2010

Я думаю, что ответы верны, потому что они относятся к заданной дате (которая, если не дано по умолчанию на сегодняшний день).

На основе документов PHP:

Функция ожидает получить строку, содержащую формат даты на английском и американском языках, и попытается проанализировать этот формат в метку времени Unix (количество секунд с 1 января 1970 года 00:00:00 UTC) относительно отметки времени, указанной в настоящее время, илитекущее время, если сейчас не указано.

Таким образом, ПЕРВОЕ ВОСКРЕСЕНЬЕ - фактически 11-е, а ПОСЛЕДНЕЕ ВОСКРЕСЕНЬЕ - фактически 4-е.Судя по формулировке вашего вопроса, вы ищете первое воскресенье месяца и последнее воскресенье месяца.Эта функция возвращает первое воскресенье ПОСЛЕ сегодняшнего дня и ПОСЛЕДНЕЕ воскресенье до сегодняшнего дня.

1 голос
/ 06 июля 2010

Я могу что-то сказать last, читать Дата и время - Относительные форматы :

"'последнее' имя дня" принимает имя последнего дня с текущего дня.(Пример: «последнее полугодие 2008 года» означает «2008-06-25»; «июль 2008» сначала устанавливает текущую дату на «2008-07-01», а затем «последнее полугодие» перемещается в предыдущую среду, которая называется «2008»).-06-25 ").

Я думаю, что это похоже на first, это дает вам следующий dayname.

...