日期转换问题 - 使用jS F,Y

时间:2012-12-03 06:52:50

标签: php date strtotime

希望有人能回答这个问题。

运行这段代码:

$date = "2nd January, 2013"; 
echo date("Y-m-d",strtotime($date));

返回:

2012-01-02.

显然不正确(或者至少是我希望的结果)

现在基于一些在线研究,这可能会将其作为时间而不是年份传递。有没有办法管理这个,或者您是否必须以美国格式提供日期才能正确返回?

1 个答案:

答案 0 :(得分:1)

根据PHP的acceptable date string format,逗号只能在文本月,日和年格式中接受:m ([ .\t-])* dd [,.stndrh\t ]+ y

所以你必须要切换月和日的位置,或者删掉逗号:

echo date("Y-m-d",strtotime("2nd January, 2013")); //outputs "2012-01-02"
echo date("Y-m-d",strtotime("2nd January 2013")); //outputs "2013-01-02"
echo date("Y-m-d",strtotime("January 2nd, 2013")); //outputs "2013-01-02"

codepad paste

猜测第一个语句返回2012的原因是因为逗号后的字符被忽略,所以字符串实际上被视为2nd January,然后假设当前年份。 / p>