使用date()php生成错误的dateresult

使用date()php生成错误的dateresult,php,parsing,date,strtotime,Php,Parsing,Date,Strtotime,我想使用date()&strotime()解析日期19381938+02:00 我的代码: echo date("Y", strtotime("1938+02:00")); 给我的结果是“2014年” 我做错了什么?对于类似的内容,只需获取字符串的前四个字符。无需使用日期等: echo substr('1938+02:00', 0, 4); 但如果坚持使用日期功能,则需要使用DateTime::createFromFormat(),因为该日期字符串不是标准格式 $date = DateTi

我想使用
date()
&
strotime()
解析日期
1938
1938+02:00

我的代码:

echo date("Y", strtotime("1938+02:00"));
给我的结果是“2014年”


我做错了什么?

对于类似的内容,只需获取字符串的前四个字符。无需使用日期等:

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

但如果坚持使用日期功能,则需要使用
DateTime::createFromFormat()
,因为该日期字符串不是标准格式

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

日期(“Y”)仅返回年份。这就是
Y
所做的

有关其他选项,请参见手册页

编辑

另一个要考虑的事情是时间戳只能回到1970。这就是时间戳(自1970年以来的秒数)


因此,时间戳的值为负值。

日期字符串的格式不可接受。是一个可接受的格式列表,用于
strotime

op想要使用date()&strotime(),我没有下载。实际上,我的第一个想法是避开加号lol。毕竟有一个正确的格式+1“需要解释吗?”-没错。“嗯,我已经赔偿了。”“弗雷德二世-谢谢你,先生。这是一个快速的否决票,让我怀疑他们的真实意图。不客气,约翰。到目前为止,你已经掌握了时间的概念。只是约会不要迟到;)Cheers我只想要年份。那有什么问题吗?它返回2014而不是1938?@Elias35啊,刚刚注意到,请看我的updae。顺便说一下,我不能更改日期格式,因为我从api获取了这些信息。什么是
1938+02:00
?1938年1月1日凌晨2点?这是正确的,但您还应该说明如何使用该日期格式。否则这个答案就没什么帮助了。