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