2013-12-20 3 views
0

Мой код выглядит следующим образом:Почему я не получаю правильный результат сравнения даты в следующей ситуации?

if(!empty($form_data["birth_date"])){ 
      $date1 = date('d/m/y'); 

      $tempArr = explode('/', $form_data["birth_date"]); 
      $date2 = date("d/m/y", mktime(0, 0, 0, $tempArr[1] ,$tempArr[0], $tempArr[2])); 

     } 

if(strtotime($date2) >= strtotime($date1)) 
      echo "Please enter date which is not greater than today's date!!!"; 

Я получаю сообщение об ошибке, даже после ввода даты меньше, чем сегодняшний день. Я использую формат dd/mm/yyyy. Кто-нибудь может мне помочь? Заранее спасибо.

$date1 = 20/12/2013; 

$date2 = 21/03/1985; 
+0

Можете ли вы показать значения, вы проверяете? – Peon

+0

Посмотрите, что вы получаете по значениям двух дат –

+0

@DainisAbols: Я добавил значения, которые сравниваю (до преобразования в timestamp) на вопрос. – PHPLover

ответ

3

функция StrToTime используется формат даты YYYY/MM/DD поэтому, пожалуйста, конвертировать датировать эту формиат, а затем применить StrToTime() и после сравнения двух дат

+0

'Даты в форматах m/d/y или d-m-y устраняются неоднозначно, рассматривая разделитель между различными компонентами: если разделитель является косой чертой (/), то предполагается, что используется американский m/d/y; тогда как если разделитель является тире (-) или точкой (.), то предполагается европейский формат d-m-y. Чтобы избежать потенциальной двусмысленности, лучше использовать даты ISO 8601 (YYYY-MM-DD) или DateTime :: createFromFormat(), когда это возможно. ' – Peon

0

Используйте функцию DateTime для этого. Попробуйте так:

$date1 = new DateTime("now"); 
$date2 = new DateTime("12/12/2013 21:00:02"); 

var_dump($date1 == $date2); 
var_dump($date1 < $date2); 
var_dump($date1 > $date2); 

ВЫВОД:

bool(false) 
bool(true) 
bool(false) 
+0

работать с' (PHP 5> = 5.3.0) ' –

+0

Но я не хотите отправить время в качестве аргумента, как вы сделали во второй строке вашего кода. – PHPLover

+0

Вы не можете использовать формат 'd/m/Y' в' strtotime() 'или' new DateTime() ', так как это недопустимый стандартный формат; php parse предполагает, что это 'm/d/Y', поэтому ошибка возрастает, когда вы пытаетесь ввести день больше 12, например' 21/12/2013'. –

 Смежные вопросы

  • Нет связанных вопросов^_^