非常简单地在PHP中我的日期是2011年1月8日,格式为08-01-11 - 当我将其运行到strtotime并将其转换回不同的日期格式时,它将恢复到2011年8月1日 - 不是理想!
有没有简单的方法可以解决这个问题,而不是必须将所有内容放入不同的数组/变量并重新放回?
谢谢!
答案 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+)来解析英国风格的字符串。