2

这是我的 PHP 代码:

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

输出是 this19/06/2013 // 1970/01/01而不是19/06/2013 // 2013/06/19.Why?

4

3 回答 3

6

这就是“为什么?”:

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

看这里!: http: //php.net/manual/en/function.strtotime.php

于 2013-07-11T10:23:18.947 回答
2

因为strtotime文档)只了解特定的日期格式d/m/Y而不是其中之一。

您可以通过使用一种可以理解的格式来使代码工作,例如d-m-Yor d.m.Y(简单str_replace的输入就可以了),但最好使用DateTime该类并明确所有内容:

$dt = DateTime::createFromFormat('d/m/Y', $g);
echo $g." // ".$dt->format('Y/m/d');
于 2013-07-11T10:23:13.070 回答
0

替换/-将其转换为适合strtotime功能的格式

用这个:-

$g = "19/06/2013"; 
echo $g."// ". date("Y/m/d", strtotime(str_replace('/','-',$g)))
于 2013-07-11T10:23:48.997 回答