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

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

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

6 ответов

Поскольку 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 функции. Смотрите оригинальный ответ.

Также есть класс 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 миллиардов лет в прошлом до того же в будущем. Функция отметки времени имеет предел (начинается с 1970 до 2038, если я правильно помню).

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

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

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

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

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

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;
}
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;
}
Другие вопросы по тегам