date("m/d/Y", strtotime($numerical." ".$day." of ".date("F")))
где он может дать день mm / dd / yyyy, который является «первым понедельником августа», например
как я могу решить, больше ли эта дата, меньше или равна сегодняшней дате?
Мне нужен метод now()
который работает в этом формате и может быть сопоставлен между объектами даты
Я еще не пробовал date () <date (). Но я не думаю, что это сработает
любое понимание
Сравните метки времени:
if (strtotime($numerical." ".$day." of ".date("F")) < time()) { // older } else { // newer }
Это возможно, поскольку strtotime()
возвращает секунды с 1.1.1970 и time()
. А на PHP вы можете легко сравнивать целые числа …
Сначала я неправильно понял ваш вопрос. Вы не используете объект даты в сравнении, как вы говорите, а скорее строковое представление даты (созданной по 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
даты и сегодня), но этот пример хорошо строится на первом.