Відповіді:
Оскільки 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функції. Дивіться оригінальну відповідь .
new DateTime('2010-05-15')лише приклад, може бути будь-який об'єкт DateTime, який ви ініціалізували раніше.
$objectце об'єкт DateTime, який я використовував, if (new DateTime() > $object) {}і він працює неправильно. Але if (time() > $bject->getTimeStamp()) {}працює коректно. @Salman A
Існує також клас 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';
}
Перевірте strtotimeфункцію PHP, щоб перетворити встановлену дату / час у часову позначку: http://php.net/manual/en/function.strtotime.php
Якщо strtotimeви не можете правильно обробити формат дати / часу ("16:00", ймовірно, буде працювати, але не "в 16:00"), вам потрібно буде використовувати функції string, наприклад, substrдля аналізу / виправлення формату та отримання часової позначки через інша функція, наприклад mktime.
Потім порівняйте отриману часову позначку з поточною датою / часом ( if ($calulated_timestamp > time()) { /* date in the future */ }), щоб побачити, чи встановлена дата / час є минулою чи майбутньою.
Я пропоную прочитати PHP-doc про функції дати / часу і повернутися сюди з деяким вихідним кодом, як тільки ви застрягнете.
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;
}
$myDateвийде, як буде рівним string (0) "".