转换12小时到24小时会产生错误的结果

时间:2014-03-29 01:03:39

标签: php datetime date-format

我尝试转换格式为m-d-y h:i的23小时格式,即2014年3月1日凌晨1点

03-01-2014 01:00 am

date_format('03-01-2014 01:00 am','Y-m-d h:i:s')
date('Y-m-d h:i:s',strtotime('03-01-2014 01:00 am')

到等效的24小时格式Y-m-d H:i:s,但我得错了结果

2014-01-03 01:00:00

假设给出

2014-03-01 01:00:00

2 个答案:

答案 0 :(得分:3)

03-01-2014 01:00 am含糊不清。是3月1日吗?还是4月3号?来自the manual

  

通过查看各个组件之间的分隔符来消除m / d / y或d-m-y格式的日期:如果分隔符是斜杠(/),则假设为美国m / d / y; 而如果分隔符是破折号( - )或点(。),则假定为欧洲d-m-y格式

     

为避免潜在的歧义,最好尽可能使用ISO 8601(YYYY-MM-DD)日期或DateTime :: createFromFormat()。

$date = DateTime::createFromFormat('m-d-Y h:i a', '03-01-2014 01:00 am');
echo $date->format('Y-m-d H:i:s');

答案 1 :(得分:0)

2005-01-30 11:03 pm 使用

date('Y-m-d h:i a');

2005-01-30 23:03 使用

date('Y-m-d H:i');