Как я могу сравнить дату с сегодняшней датой, используя значения меток времени UNIX в PHP?

У меня есть следующая переменная, содержащая дату в MM-DD-YYYY формат. Я хочу сравнить эту дату с сегодняшней датой. Если дата, содержащаяся в переменной, больше, чем сегодняшняя дата, я хочу повторить «Ошибка», и если она меньше или равна сегодняшней дате, я хочу повторить «Успех».
За эту вещь я не хочу использовать класс DateTime.

Я думаю, что использование значений меток времени UNIX может быть лучшим вариантом. Если у вас есть какой-либо другой лучший и эффективный вариант, пожалуйста.

Ниже приведена переменная, содержащая дату в MM-D-YYYY format

$form_data['reg_date'] = '12-11-2014'; //This is today's date i.e. 11th December 2014

Если переменная $form_data['reg_date'] содержит дату, превышающую сегодняшнюю дату (т.е. 11 декабря 2014 г.), она должна выдавать сообщение об ошибке, в противном случае должно отображаться сообщение об успешном завершении.

Благодарю.

-1

Решение

У меня есть следующая переменная, содержащая дату в формате ММ-ДД-ГГГГ. Я хочу сравнить эту дату с сегодняшней датой.

Вы не можете сравнить строковое представление даты в формате m-d-Y, Этот формат недопустим, и php его не поймет. Читать инструкцию какие форматы даты действительны.

Лучший способ сравнить строковые даты в формате Y-m-d или конвертируйте строковую дату в целое число метки времени Unix. Но как только у вас есть свидание в Y-m-d формат, тривиально преобразовать его в метку времени Unix, поэтому преобразование его в метку времени просто для сравнения является ненужным шагом.

Перерабатывать m-d-Y в m/d/Y формат, а затем Unix метка времени:

$date = '12-25-2014';
$date = str_replace('-', '/', $date);
var_dump($date);
var_dump(strtotime($date));

if (strtotime($date) > strtotime('today')) echo "ERROR";
else echo "SUCCESS";

демонстрация

Но это я уже объяснил в ответ на ваш предыдущий / тот же вопрос (см. 2-ую ссылку).

Я думаю, что использование значений меток времени UNIX может быть лучшим вариантом. Если у вас есть какой-либо другой лучший и эффективный вариант, пожалуйста.

Другим методом может быть преобразование формата с sscanf() функция:

$date = '12-25-2014';
sscanf($date, "%d-%d-%d", $m, $d, $Y);
$date = "$Y-$m-$d";
var_dump($date);

if ($date > date('Y-m-d')) echo "ERROR";
else echo "SUCCESS";

демонстрация

Но я все равно рекомендую вам использовать Класс DateTime, как я уже объяснил, если мой предыдущий ответ.

1

Другие решения

Пожалуйста, попробуйте ниже код

if(strtotime(date('d-m-Y')) == strtotime($form_data['reg_date'])){
echo 'Today\'s Date';
}
-1

Сначала вы должны преобразовать дату в значение метки времени, например

$date_time = strtotime("11-12-2014");

и затем вы можете сделать это, чтобы сравнить сегодняшнюю дату с датой, которую вы имеете.

$diff = $date_time - time();

Это даст вам разницу в дате в секундах.

-1
По вопросам рекламы [email protected]