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

时间:2010-11-12 10:23:14

标签: php date strtotime

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

有没有简单的方法可以解决这个问题,而不是必须将所有内容放入不同的数组/变量并重新放回?

谢谢!

3 个答案:

答案 0 :(得分:29)

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

我这样做是为了解决它:

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

$date现在strtotime能够

答案 1 :(得分:14)

从PHP手册:

  

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

     

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

我用破折号替换了斜线,然后strtotime按预期在英国约会工作。

答案 2 :(得分:11)

strtotime() works with US dates only

  

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

您必须重新排列日期格式或使用date_parse_from_format()(PHP 5.3+)来解析英国风格的字符串。