Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP-使用英国日期格式的strotime(dd-mm-yy)_Php_Date_Strtotime - Fatal编程技术网

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

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手册: “通过查看各个组件之间的分隔

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

有没有简单的方法来解决这个问题,而不必将所有内容放入不同的数组/变量中,然后再返回

谢谢大家!

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的答案实现了同样的效果,而且简单得多。