这就是我所拥有的:
$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这是正确的。为什么会这样?
答案 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';
如果日期格式为日月年使用短划线( - )则其他格式为月份日年使用斜杠(/)