PHP - 使用英国日期格式的strtotime(dd-mm-yy)

Nic*_*ick 12 php date strtotime

很简单,在PHP中我的日期是2011年1月8日,格式为08-01-11 - 当我将其运行到strtotime并将其转换回不同的日期格式时,它将恢复到2011年8月1日 - 不理想!

有没有简单的方法,而不是必须将所有内容放入不同的数组/变量,然后再回来?

谢谢!

mys*_*elf 28

完美的解决方案是让美国首先使用正确的日期格式...; 0)

我这样做是为了解决它:

$date = "31/12/2012";
$bits = explode('/',$date);
$date = $bits[1].'/'.$bits[0].'/'.$bits[2];
Run Code Online (Sandbox Code Playgroud)

$date现在strtotime能够了


小智 13

从PHP手册:

"m/d/y或dmy格式的日期通过查看各个组件之间的分隔符来消除歧义:如果分隔符是斜杠(/),则假设是美国m/d/y;而如果分隔符是短划线( - )或点(.),然后假设欧洲dmy格式.

为避免潜在的歧义,最好尽可能使用ISO 8601(YYYY-MM-DD)日期或DateTime :: createFromFormat()."

我用破折号替换了斜线,然后strtotime按照预期在英国的日期工作.


Pek*_*ica 11

strtotime() 仅适用于美国日期:

该函数期望给出一个包含美国英语日期格式的字符串,并尝试将该格式解析为Unix时间戳.

您必须重新排列日期格式或使用date_parse_from_format()(PHP 5.3+)来解析UK样式字符串.