Ограничение даты PHP

Я пытаюсь отделить время от заданной даты и времени строки. Я просто попробовал следующий пример.

$time = '2014-01-20 10:45:45'; echo '<br>'.$finalTime = date("H:i:s",strtotime($time)); echo '<br>'.$date = date("d FY",strtotime($time)); 

Я получаю правильные дату и время.

 10:45:45 20 January 2014 

Но когда я попытался с заданной строкой, никакого правильного результата.

 $time = '1899-12-30 19:30:00'; echo '<br>'.$finalTime = date("H:i:s",strtotime($time)); echo '<br>'.$date = date("d FY",strtotime($time)); 

PHP всегда возвращает мне следующий результат.

 00:00:00 01 January 1970 

Я не уверен, есть ли ограничение на функцию даты, которая не возвращается 1899. Это так?

Используйте DateTime и DateTime::format() :

 $time = '1899-12-30 19:30:00'; $dt = new DateTime($time); echo $dt->format('d FYH:i:s'); 

Рабочий пример: http://3v4l.org/fM22Z

Метод strtotime() ограничен эпохой Unix, которая составляет 1 января 1970 года.

Обновление. Как указано ниже, ваш код будет работать до 1901 года (как отрицательная отметка времени), см. Здесь: http://3v4l.org/CSJte

Ваша дата до эпохи unix. DateTime() позволяет вам обойти это.

 $dt = new DateTime("1899-12-30 19:30:00"); echo $dt->format("d FY"); echo $dt->format("h:i:s");