дата php меньше, чем другая дата


Учитывая такой тип объекта даты date("m/d/Y", strtotime($numerical." ".$day." of ".date("F")))

Где это может дать мм/дд/гггг день, который является "первым понедельником августа", например

Как я могу решить, является ли эта дата больше, меньше или равна сегодняшней дате?

Мне нужен метод now(), который работает в этом формате и может сравниваться между объектами даты

Я еще не пробовал date() <дата(), пока. Но я не думаю, что это сработает

Любое понимание ценится

Author: CQM, 2013-06-26

2 answers

Сравните временные метки:

if (strtotime($numerical." ".$day." of ".date("F")) < time()) {
    // older
} else {
    // newer
}

Это возможно, так как strtotime() возвращает секунды с 1.1.1970 и time() тоже. А в PHP вы можете легко сравнивать целые числа...

 18
Author: bwoebi, 2013-06-26 19:57:49

Сначала я неправильно понял ваш вопрос. Вы не используете объект 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 даты и сегодняшнего дня), но этот пример хорошо основан на первом.

 24
Author: ell, 2013-06-26 20:17:15