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

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

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

Ответ 1

Поскольку PHP> = 5.2.2, вы можете использовать класс 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. Смотрите оригинальный ответ.

Ответ 2

Также существует класс 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';
}

Ответ 3

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

Ответ 4

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

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

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

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

Ответ 5

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

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;
}

Ответ 6

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;
}