Я написал следующий код для сравнения даты в переменной с сегодняшней датой. Если дата в переменной больше, чем сегодняшняя дата, должно появиться сообщение об ошибке. Но это не работает должным образом в моем случае.
$form_data['trans_date'] = '12-11-2014';//Date to be compared with today's date in mm-dd-yyyy format
if(strtotime(date('m-d-Y')) < strtotime($form_data['trans_date'])) {
echo 'Error';
} else {
echo 'Success';
}
Фактически сегодняшняя дата — 12-11-2014, то есть 11 декабря 2014 года, и я косвенно сравниваю сегодняшнюю дату с самой собой. Поэтому я не должен получать сообщение об ошибке, но я получаю сообщение об ошибке.
Я пытался отладить код, печатая значения меток времени, затем я получил следующие значения:
Today's date 1413097200
Trans date 1415779200
На самом деле, поскольку значение временной отметки Trans Date немного больше, чем значение временной отметки сегодняшней даты, возникает ошибка.
Но так не должно быть, поскольку дата, которую я сравниваю, не больше, чем сегодняшняя дата.
Так как мне решить эту проблему?
Вы можете использовать класс simplePHP для сравнения дат:
include('../code/simpleDate.php');
$date = new simpleDate();
echo $date->set('2014-11-12')->compare('now')->isAfterOrEqual();
пожалуйста, проверьте страница учебников.
Значения отличаются не незначительно, а за месяц:
Преобразование вашей временной метки обратно в дату дает:
Today: Sun, 12 Oct 2014 07:00:00 GMT
Trans date: Wed, 12 Nov 2014 08:00:00 GMT
Ошибка в вашем коде заключается в том, что strtotime ожидает либо «d-m-Y», либо «m / d / Y».