Проверьте день и разницу во времени даты - PullRequest
1 голос
/ 20 октября 2019

У меня есть значение даты / времени (с часовым поясом):

2019-10-22T17:00:00+02:00

Теперь я хотел бы проверить, какой день недели у этой даты (например, понедельник) и имеет ли эта дата разницу в1 час между 16:00 и датой.

Как я могу проверить эти два фактора как наилучшую практику?

1 Ответ

0 голосов
/ 20 октября 2019

Вы можете использовать конструктор DateTimeImmutable для анализа строки даты, DateTime#format для форматирования / получения дня недели и DateTime#diff, чтобы получить разницу:

$date_string = '2019-10-22T17:00:00+02:00';

$date = new \DateTimeImmutable($date_string);
$date_at_16 = $date->setTime(16, 0);

echo $date->format('l'), PHP_EOL;
echo $date->diff($date_at_16)->h;

Демо: https://3v4l.org/R7e9n

Обратите внимание, что:

  • Я использовал DateTimeImmutable, которыйточно так же, как DateTime, за исключением того, что он не может быть изменен, поэтому setTime также не изменяет начальную дату,
  • вы должны перехватить потенциальное исключение его конструктора (если формат недопустим),
  • лучше использовать 'N' для получения дня недели, так как он числовой и, следовательно, более уместен для хранения / сравнения (я использовал 'l' для этой небольшой демонстрации, чтобы получитьполное имя),
  • , если вам необходимо узнать, наступило ли это за 1 час до или после 16 часов, вы можете проверить флаг DateInterval#invert (интервал дат - это то, что возвращает DateTime#diff).
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...