2016-12-14 3 views
2

Следующий фрагмент кода:PHP - StrToTime возвращение() 1970

возвращает меня:

01.01.1970-01: 00: 00

Что это правильный путь преобразовать «01.01.2000-11: 12: 32» в объект времени/даты, чтобы сравнить его с текущей меткой времени?

например.

if (date("d.m.Y-H:i:s") > date("d.m.Y-H:i:s", strtotime("01.01.2000-11:12:32"))) { 
    echo "future"; 
} else { 
    echo "past"; 
} 
+0

Попробуйте изменить точки к черту. –

+0

@ PraveenKumar так ... точки разрешены? – 13loodH4t

+0

Ну, они ... Но это связано с локализацией. Не в левой части, а в правой части. –

ответ

1

Это связано с локализацией. Попробуйте дать другой формат, так как формат много вопросов:

echo date("d.m.Y-H:i:s", strtotime("01/01/2000 11:12:32")); 
echo date("d.m.Y-H:i:s", strtotime("01-01-2000 11:12:32")); 
  1. Вы не должны . на дату и месяц сепараторе.
  2. Вы не можете разделить дату и время с помощью -.

Если вы получаете входной сигнал от другого источника, попробуйте использовать str_replace:

echo date("d.m.Y-H:i:s", strtotime(str_replace(array(".", "-"), array("/", " "), "01.01.2000-11:12:32"))); 

Выход: http://ideone.com/d19ATK

1

Попробуйте заменить . с -:

echo date("d.m.Y-H:i:s", strtotime(str_replace('.', '-', "01.01.2000 11:12:32")));

Также удалите - между датой и временем.

1

Вы можете использовать DateTime::createFromFormat

$date = DateTime::createFromFormat('d.m.Y-H:i:s', '01.01.2000-11:12:32'); 
$now = new DateTime(); 

if ($now > $date) { 
    echo "future"; 
} else { 
    echo "past"; 
} 
Смежные вопросы