2012-09-05 77 views
4

我今天在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

我感到困惑的是,爲什麼第一個格式不產生正確的答案。任何幫助?

回答

6

manual

如果隔板是斜線(/),那麼美國米/ d/y被假定;而如果分隔符是破折號( - )或點(。),則歐洲的d-m-y格式假定爲

4

這不是date函數的行爲,而是strtotime的行爲。 strtotime只能處理Date Formats手冊頁上列出的特定格式的日期。 09-september-2012的格式爲dd ([ \t.-])* m ([ \t.-])* y,但2012-september-09與任何支持的格式不匹配。

1

我想在你的代碼,

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

strtotime('2012-september-09')不是一個有效的格式( '2012九月-09')strtotime()日期功能。

請參閱此鏈接http://www.php.net/manual/en/datetime.formats.date.php

+0

其他答案已經涵蓋了這一點。 –

+0

是的,我在打字時晚了一點。 –