PHP — проверка, соответствует ли заданная дата заданному интервалу

#php #date #datetime

#php #Дата #дата и время

Вопрос:

Если у меня есть DateTime интервал, например:

 $slot_interval = DateInterval::createFromDatestring('30 minutes');
  

И другой DateTime объект с любой датой, как я могу проверить, соответствует ли объект интервалу? Итак, если интервал равен 30 минутам, то такие даты, как 2016-10-04 12:00:00 и 2016-10-04 14:30:00 , будут действительными, в то время 2016-10-04 12:05:10 как больше не действительны?

Я не смог найти много ресурсов для этого, за исключением некоторых решений для MySQL и / или преобразования дат в временные метки unix, деления в секундах и проверки остатка. Было интересно, есть ли более приятное и лучшее решение для этого?

Спасибо!

Ответ №1:

Попробуйте:

  $minutes = date('i',strtotime($inputDate);
 $seconds = date('s',strtotime($inputDate);
 if((($minutes == '00') || ($minutes == '30')) amp;amp; ($seconds == '00')){
     // do stuff
 }
  

Комментарии:

1. Да, я мог бы выполнить проверку подобным образом, но $slot_interval это может быть что-то вроде 1 hour , 2 hours , 15 minutes , 30 seconds и т.д., Поэтому мне было интересно, есть ли решение для использования фактического DateInterval объекта для вычисления

2. @Giedrius значит $slot_interval , это не дата? Не могли бы вы опубликовать свой полный код. Не совсем уверен, что вы пытаетесь здесь сделать.

3. $slot_interval является DateInterval объектом, как указано выше. Чего я пытаюсь достичь, так это проверить DateTime объект (не $slot_interval ), чтобы проверить, соответствует ли он интервалу, определенному $slot_interval

4. @Giedrius Я также отредактировал код для учета секунд. Это сделает так, что будут помечены только даты, которые точно равны ’00’ или ’30’ минутам. Если это не тот ответ, который вы ищете, не могли бы вы рассказать мне фактическое приложение и еще несколько примеров кода?

5. Спасибо за вашу помощь. Ответ правильный для данного конкретного случая, поэтому я пометил его как таковой. Однако для дальнейшего использования я искал, существует ли функция, которая использовала DateInterval бы объект и проверяла DateTime объект без использования предопределенных значений (например 30 , минут и 00 секунд). Например, если DateInterval 15 minutes 15 seconds это так, было бы намного сложнее проверить, используя ваш метод.