Я пытаюсь написать сценарий, который будет проверять, прошла ли текущая дата / время с 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; }