日期函数的奇怪行为

时间:2012-09-05 10:02:58

标签: php date strtotime

我今天在StackOverflow上遇到过这个问题,但没有得到答案。

我的问题是

echo date('Y-m-d',strtotime('2012-september-09')); // output - 2012-09-01

echo date('Y-m-d',strtotime('09-september-2012')); // output - 2012-09-09

Codepad

我很困惑,为什么第一种格式不能产生正确的答案。任何帮助?

3 个答案:

答案 0 :(得分:6)

来自manual

如果分隔符是斜杠(/),则假设为美国m / d / y;而如果分隔符是破折号( - )或点(。),则假定为欧洲d-m-y格式

答案 1 :(得分:4)

这不是date函数的行为,而是strtotime的行为。 strtotime只能处理Date Formats手册页中列出的特定格式的日期。 09-september-2012格式为dd ([ \t.-])* m ([ \t.-])* y格式,但2012-september-09与任何支持的格式都不匹配。

答案 2 :(得分:1)

我认为在你的代码中,

echo date('Y-m-d',strtotime('2012-september-09'));

strtotime('2012-september-09')不适用于strtotime()日期函数的有效格式('2012-september-09')

请参阅此链接http://www.php.net/manual/en/datetime.formats.date.php