parsing — Ложный результат даты с использованием date () Переполнение стека

Я хочу разобрать дату 1938 1938+02:00 с помощью date() & strtotime(),

Мой код:

echo date("Y", strtotime("1938+02:00"));

дает мне в результате «2014» ..

Что я делаю неправильно?

-2

Решение

Для чего-то вроде этого просто получите первые четыре символа строки. Не нужно работать с датами и тому подобным:

echo substr('1938+02:00', 0, 4);

демонстрация

Но если вы настаиваете на использовании функции даты, вам нужно использовать DateTime::createFromFormat() поскольку эта строка даты не является стандартным форматом.

$date = DateTime::createFromFormat('YP', '1938+02:00');
echo $date->format('Y');

демонстрация

5

Другие решения

date("Y"); только вернуть год. Вот что Y делает.

Смотрите страницу руководства для Дата для других вариантов.

РЕДАКТИРОВАТЬ

Еще одна вещь, которую следует учитывать, это то, что временные метки берут свое начало только с 1970 года. Вот что такое временная метка (количество секунд с 1970 года).

Итак, это даст вам отрицательное значение для отметки времени.

0

Ваша строка даты не в приемлемом формате. Вот список приемлемых форматов для strtotime

-1
По вопросам рекламы [email protected]