Php 使用strotime解析格式为d/m/Y的日期

Php 使用strotime解析格式为d/m/Y的日期,php,date,Php,Date,这是我的PHP代码: $g = "19/06/2013"; echo $g." // ".date("Y/m/d", strtotime($g)) 输出是19/06/2013//1970/01/01,而不是19/06/2013//2013/06/19。为什么?因为strotime()只理解,而d/m/Y不是其中之一 您可以使用一种已理解的格式,例如d-m-Y或d.m.Y(在输入上使用一个简单的stru-replace),使代码正常工作,但最好使用DateTime类来实现这一点,并将所有内容明

这是我的PHP代码:

$g = "19/06/2013"; 
echo $g." // ".date("Y/m/d", strtotime($g))

输出是
19/06/2013//1970/01/01
,而不是
19/06/2013//2013/06/19
。为什么?

因为
strotime
()只理解,而
d/m/Y
不是其中之一

您可以使用一种已理解的格式,例如
d-m-Y
d.m.Y
(在输入上使用一个简单的
stru-replace
),使代码正常工作,但最好使用
DateTime
类来实现这一点,并将所有内容明确化:

$dt = DateTime::createFromFormat('d/m/Y', $g);
echo $g." // ".$dt->format('Y/m/d');
这就是“为什么?”:

注: 通过查看各个组件之间的分隔符,可以消除m/d/y或d-m-y格式的日期歧义:如果分隔符是斜杠(/),则假定为美式m/d/y;而如果分隔符是破折号(-)或点(.),则假定为欧洲d-m-y格式


看这里

/
替换为
-
,以将其转换为适用于
strotime
功能的格式

使用以下命令:-

$g = "19/06/2013"; 
echo $g."// ". date("Y/m/d", strtotime(str_replace('/','-',$g)))

strotime(str_replace(“/”、“-”、$g))
或只需使用DateTime类即可指定任意格式-1因为当这个用例的功能已经存在时,它试图发明轮子,而不是试图强制数据,以便strotime可能返回正确的结果。