дата php меньше, чем другая дата
Учитывая такой тип объекта даты
date("m/d/Y", strtotime($numerical." ".$day." of ".date("F")))
Где это может дать мм/дд/гггг день, который является "первым понедельником августа", например
Как я могу решить, является ли эта дата больше, меньше или равна сегодняшней дате?
Мне нужен метод now()
, который работает в этом формате и может сравниваться между объектами даты
Я еще не пробовал date() <дата(), пока. Но я не думаю, что это сработает
Любое понимание ценится
2 answers
Сравните временные метки:
if (strtotime($numerical." ".$day." of ".date("F")) < time()) {
// older
} else {
// newer
}
Это возможно, так как strtotime()
возвращает секунды с 1.1.1970 и time()
тоже. А в PHP вы можете легко сравнивать целые числа...
Сначала я неправильно понял ваш вопрос. Вы не используете объект date в сравнении, как вы говорите, а скорее строковое представление даты (созданное date
).
Легко сравнить практически любое строковое представление даты с текущим временем:
$now = time();
$date = '2015/03/12'; #could be (almost) any string date
if (strtotime($date) > $now) {
#$date occurs in the future
} else {
#$date occurs now or in the past
}
Сравнение строки даты с текущим днем лишь немного сложнее. Вот один из способов сделать это:
$today_start = strtotime('today');
$today_end = strtotime('tomorrow');
$date = '2015/03/12'; #could be (almost) any string date
$date_timestamp = strtotime($date);
if ($date_timestamp >= $today_end) {
#$date occurs after today
} elseif ($date_timestamp < $today_start) {
#$date occurs before today
} else {
#$date occurs today
}
Вместо того, чтобы использовать time
для получения текущего времени вплоть до секунды вы вычисляете временные метки для двух полуночников, которые соответствуют сегодняшней дате. Затем вы сравниваете с ними.
Есть более умные способы сделать это (например, сравнить представления YYYY/MM/DD
даты и сегодняшнего дня), но этот пример хорошо основан на первом.