Как проверить, соответствует ли текущая дата / время заданной дате / времени?

Я пытаюсь написать сценарий, который будет проверять, прошла ли текущая дата / время с 05/15/2010 at 4PM

Как я могу использовать функцию date () PHP для выполнения этой проверки?

Поскольку PHP> = 5.2.0 вы можете использовать класс DateTime как таковой:

 if (new DateTime() > new DateTime("2010-05-15 16:00:00")) { # current time is greater than 2010-05-15 16:00:00 and thus in the past } 

Строка, переданная конструктору DateTime, анализируется в соответствии с этими правилами .


Обратите внимание, что также можно использовать функции time и strtotime . См. Оригинальный ответ .

Существует также класс DateTime, который реализует функцию для операторов сравнения.

 // $now = new DateTime(); $dtA = new DateTime('05/14/2010 3:00PM'); $dtB = new DateTime('05/14/2010 4:00PM'); if ( $dtA > $dtB ) { echo 'dtA > dtB'; } else { echo 'dtA <= dtB'; } 

Диапазон объектов dateTime составляет примерно 292 миллиарда лет в прошлом, к тому же в будущем. Функция timestamp имеет предел (начинается с 1970 до 2038, если я правильно помню).

Проверьте PHP strtotime чтобы преобразовать установленную дату / время в метку времени: http://php.net/manual/en/function.strtotime.php

Если strtotime не может strtotime обрабатывать ваш формат даты / времени («4:00 PM», вероятно, будет работать, но не «при 4PM»), вам нужно будет использовать строковые функции, например substr для разбора / исправления вашего формата и получения timestamp через другую функцию, например mktime .

Затем сравните результирующую временную метку с текущей датой / временем ( if ($calulated_timestamp > time()) { /* date in the future */ } ), чтобы увидеть, установлена ​​ли заданная дата / время в прошлом или в будущем.

Я предлагаю прочитать PHP-doc о функциях даты / времени и вернуться сюда с некоторым исходным кодом после того, как вы застряли.

У меня была проблема с этой датой, и мне нужно немного скорректировать

 function getDatetimeNow() { $tz_object = new DateTimeZone('Europe/Belgrade'); $datetime = new DateTime(); $datetime->setTimezone($tz_object); return $datetime->format('Y\-m\-d\ h:i:s'); } $currentDate = getDatetimeNow(); $dtA = new DateTime($currentDate); $dtB = new DateTime($date); if ( $dtA > $dtB ) { $active = 0; return $active; } else { $active = 1; return $active; }