Как я могу проверить, превышает ли текущая дата / время установленную дату / время? - PullRequest
104 голосов
/ 14 мая 2010

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

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

Ответы [ 6 ]

203 голосов
/ 14 мая 2010

Поскольку 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
    # in other words, 2010-05-15 16:00:00 has passed
}

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


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

77 голосов
/ 14 мая 2010

Существует также класс 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';
}
7 голосов
/ 29 августа 2011

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

6 голосов
/ 14 мая 2010

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

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

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

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

1 голос
/ 11 августа 2016

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

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;
}
0 голосов
/ 26 июня 2018
date_default_timezone_set('Asia/Kolkata');

$curDateTime = date("Y-m-d H:i:s");
$myDate = date("Y-m-d H:i:s", strtotime("2018-06-26 16:15:33"));
if($myDate < $curDateTime){
    echo "active";exit;
}else{
    echo "inactive";exit;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...