PHP - проверка соответствия двух дат, но игнорирование года - PullRequest
1 голос
/ 26 сентября 2011

У меня есть массив, который будет выводить дату. Эта дата выводится в формате мм / дд / гггг. Я не могу контролировать, как это выводится, поэтому я не могу изменить это.

Array
(
    [date] => 04/06/1989
)

Я хочу использовать php, чтобы проверить, соответствует ли эта дата текущей дате (сегодня), но игнорируя год. Так что в приведенном выше примере я просто хочу проверить, сегодня ли 6 апреля. Я просто изо всех сил пытаюсь найти что-нибудь, что документирует, как игнорировать годы.

Ответы [ 7 ]

2 голосов
/ 26 сентября 2011
if( substr( $date, 0, 5 ) == date( 'm/d' ) ) { ...

Работает только в том случае, если точно известно, что месяц и дата состоят из двух символов.

1 голос
/ 26 сентября 2011

Пришел с небольшим опозданием, но вот тот, который не заботится о том, в каком формате находится другая дата (например, & ldquo; 26 сентября 1989 г.). Это может пригодиться в случае изменения формата.

if (date('m/d') === date('m/d', strtotime($date))) {
    echo 'same as today';
} else {
    echo 'not same as today';
}
0 голосов
/ 21 октября 2014

Вы можете использовать для сравнения двойное преобразование, если у вас есть дата.

$ currentDate = strtotime (date ('m / d', time ()));-> возвращает текущую дату без заботы за год.

// $ someDateTime - переменная, указывающая на некоторую дату несколько лет назад, например, на день рождения.$ someDateTimeUNIX = strtotime ($ someDateTime) -> преобразуется в формат времени unix.

теперь мы конвертируем этот timeunix в дату с указанием только дня и месяца: $ dateConversionWithoutYear = date ('m / d',$ someDateTimeUNIX);$ dateWithoutRegardForYear = strtotime ($ dateConversionWithoutYear);-> вуаля !, теперь мы можем сравнивать значения текущего года.

, например: $ dateWithoutRegardForYear == $ currentDate, прямое сравнение

0 голосов
/ 26 сентября 2011

Используйте это:

$my_date = YOUR_ARRAY[date];

$my_date_string = explode('/', $my_date);

$curr_date = date('m,d,o'); 
$curr_date_string = explode(',', $date);

if (($my_date_string[0] == $curr_date_string[0]) && ($my_date_string[1] == $curr_date_string[1]))
{
    DO IT
}

Таким образом, вы конвертируете даты в строки (день, месяц, год), которые сохраняются в массиве. Затем вы можете легко сравнить первые два элемента каждого массива, который содержит день и месяц.

0 голосов
/ 26 сентября 2011

привет, вы можете просто сравнить даты как это

 if(date('m/d',strtotime($array['date']])) == date('m/d',strtotime(date('Y-m-d H:i:s',time()))) )
0 голосов
/ 26 сентября 2011

будет извлекать дату в том же формате:

$today = date('m/d');
0 голосов
/ 26 сентября 2011

Вы можете преобразовать другую дату в эквивалент метки времени, а затем использовать форматирование date() для сравнения. Может быть, лучший способ сделать это, но это будет работать до тех пор, пока исходная дата будет разумно отформатирована.

$today = date('m/Y', time());
$other_date = date('m/Y', strtotime('04/06/1989'));
if($today == $other_date) {
    //date matched
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...