У меня есть следующая переменная, содержащая дату в 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 г.), она должна выдавать сообщение об ошибке, в противном случае должно отображаться сообщение об успешном завершении.
Благодарю.
У меня есть следующая переменная, содержащая дату в формате ММ-ДД-ГГГГ. Я хочу сравнить эту дату с сегодняшней датой.
Вы не можете сравнить строковое представление даты в формате 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, как я уже объяснил, если мой предыдущий ответ.
Пожалуйста, попробуйте ниже код
if(strtotime(date('d-m-Y')) == strtotime($form_data['reg_date'])){
echo 'Today\'s Date';
}
Сначала вы должны преобразовать дату в значение метки времени, например
$date_time = strtotime("11-12-2014");
и затем вы можете сделать это, чтобы сравнить сегодняшнюю дату с датой, которую вы имеете.
$diff = $date_time - time();
Это даст вам разницу в дате в секундах.