PHP-使用英国日期格式的strotime(dd-mm-yy)
很简单,在PHP中,我有一个日期是2011年1月8日,格式为08-01-11——当我将其运行到strotime并将其转换回不同的日期格式时,它会恢复到2011年8月1日——这并不理想 有没有简单的方法来解决这个问题,而不必将所有内容放入不同的数组/变量中,然后再返回 谢谢大家!PHP-使用英国日期格式的strotime(dd-mm-yy),php,date,strtotime,Php,Date,Strtotime,很简单,在PHP中,我有一个日期是2011年1月8日,格式为08-01-11——当我将其运行到strotime并将其转换回不同的日期格式时,它会恢复到2011年8月1日——这并不理想 有没有简单的方法来解决这个问题,而不必将所有内容放入不同的数组/变量中,然后再返回 谢谢大家! strotime(): 函数期望得到一个包含美式英语日期格式的字符串,并尝试将该格式解析为Unix时间戳 您必须重新排列日期格式或使用(PHP 5.3+)解析UK样式字符串。来自PHP手册: “通过查看各个组件之间的分隔
strotime()
:
函数期望得到一个包含美式英语日期格式的字符串,并尝试将该格式解析为Unix时间戳
您必须重新排列日期格式或使用(PHP 5.3+)解析UK样式字符串。来自PHP手册:
“通过查看各个组件之间的分隔符,可以消除m/d/y或d-m-y格式中的日期歧义:如果分隔符是斜杠(/),则假定为美国m/d/y;而如果分隔符是短划线(-)或点(.),则假定为欧洲d-m-y格式
为避免潜在的歧义,最好尽可能使用ISO 8601(YYYY-MM-DD)日期或DateTime::createFromFormat()
我用破折号代替了斜杠,然后strotime在英国的日期按预期工作。完美的解决方案是美国首先使用正确的日期格式;0) 我这样做是为了绕开它:
$date = "31/12/2012";
$bits = explode('/',$date);
$date = $bits[1].'/'.$bits[0].'/'.$bits[2];
$date
现在是strotime
able@Nick我明白了!然后一个分解(“-”,$date)
和重新排列数组可能是最好的解决方案。完美的答案。这确实有效,但gregmacoy的答案实现了同样的效果,而且简单得多。