2014-10-31 2 views
-2

Я хочу разобрать дату 19381938+02:00 используя date() & strtotime().False dateresult using date() php

Мой код:

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

дает мне как результат "2014" ..

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

+4

Что такое '1938 + 02: 00'? 2 мая 1 января 1938 года? –

ответ

5

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

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

Demo

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

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

Demo

+2

Downvoter помочь объяснить? –

+0

op хочет использовать дату() и strtotime(), я не уменьшал – Shubanker

+0

Это хорошо, но нужно поощрять b рекламный код? –

0

date("Y"); возвращают только год. Это то, что делает Y.

Для получения дополнительных сведений см. Страницу руководства для date.

EDIT

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

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

+0

Я хочу только год. – R2D2

+0

Тогда в чем проблема? –

+0

возвращается 2014 г. не 1938? – R2D2

-1

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

+1

Это правильно, но вы также должны показать, как работать с этим форматом даты. В противном случае этот ответ не очень полезен. –