date()和strtotime的问题

时间:2010-08-31 22:40:15

标签: php

这就是我所拥有的:

$str = '12-25-2009';
echo date('Y-m-d', strtotime($str));

这产生了1969-12-31而不是2009-12-25。如果我将$ str var设置为01-01-2009,我将得到2009-01-01这是正确的。为什么会这样?

3 个答案:

答案 0 :(得分:2)

strtotime('12-25-2009')返回false,然后date将其转换为整数。

似乎使用破折号会混淆strtotime。相同的日期,用斜杠代替,就像一个魅力:

echo strtotime('12/25/2009'); // yields 1261717200

答案 1 :(得分:2)

使用破折号作为分隔符,它将解析为欧洲日期,即DD-MM-YYYY。 01-01-2009是MM / DD / YYYY或DD-MM-YYYY的有效日期,但12-25-2009仅作为MM-DD-YYYY有效,这是不正确的。 MM / DD / YYYY的正确表示是斜杠,另一张海报已经指出确实正确解析。

如果您使用YYYY-MM-DD(ISO日期格式),您至少可以避免其中一些挫折。

答案 2 :(得分:2)

尝试$str = '25-12-2009';$str = '12/25/2009';

如果日期格式为日月年使用短划线( - )则其他格式为月份日年使用斜杠(/)