Я пытаюсь отделить время от заданной даты и времени строки. Я просто попробовал следующий пример.
$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");