strtotime считает «первое воскресенье следующего месяца» = среда?

strtotime это своего рода волшебство. И хотя я знаю, что это не может сделать что-нибудь, Я всегда думаю, прежде чем искать правильное решение.

Поэтому я хотел получить первое воскресенье и понедельник следующего месяца. Я попробовал это:

strtotime("first Sunday next month")
strtotime("first Monday next month")

после форматирования (%d/%m/%y) результаты:

12/11/2014
13/11/2014

Это среда и четверг. Что дает? Я ожидал, что это не сработает или даст мне неправильное воскресенье, но что там делает среда?

Обновить

Мне не нужна помощь, чтобы понять, как добраться до следующего воскресенья. Я знаю, как делать правильные вычисления (я все равно знаю, как правильно искать). Мое предположение выше было только я возиться в поисках ярлыка. Мне интересно, однако почему я получаю этот специфический странный результат, который кажется совершенно не связанным со всем, что я написал

0

Решение

Попробуй это:

echo date('r', strtotime("first Sunday of next month")) . PHP_EOL;
echo date('r', strtotime("first Monday of next month")) . PHP_EOL;

Это очень сложно, но вы должны убедиться, что ваш формат точно описан в Относительные форматы раздел руководства. В этом случае вы хотите порядковый пробел день имени пробел ‘of’. В противном случае, это, вероятно, просто два последовательных вычисления.

В этом случае, поскольку все выражение не имеет известного формата, оно разделяется:

  1. Переезд в следующее воскресенье: воскресенье, 12 октября 2014 г.
  2. Переход на следующий месяц: ср., 12 ноября 2014 г.

Тестовый код:

echo date('r', strtotime("first Sunday next month")) . PHP_EOL;
echo date('r', strtotime("first Monday next month")) . PHP_EOL;

echo PHP_EOL;

echo date('r', strtotime("first Sunday")) . PHP_EOL;
echo date('r', strtotime("first Monday")) . PHP_EOL;
echo date('r', strtotime("next month")) . PHP_EOL;

Отказ от ответственности: я почти никогда не понимаю это сам.

3

Другие решения

Пытаться

// strtotime("first Sunday", strtotime("next month")); // wrong
echo date("%d/%m/%y", strtotime("first sunday of next month"));

Но выводы неверные результаты для PHP 4.3 — 5.2.17!

2

По вопросам рекламы [email protected]