#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
это так, было бы намного сложнее проверить, используя ваш метод.