createFormat PHP输入字符串与输出对象不匹配

时间:2012-06-16 20:18:46

标签: php string datetime

我将以下字符串分配给变量:

$date = "16 June, 2012, 13:00pm";

我正在通过createFromFormat运行它来尝试将其转换为DateTime对象:

$dateTime = DateTime::createFromFormat("d M, Y, H:ia", $date);

这是我回来的对象:

DateTime Object
(
    [date] => 2012-06-17 01:00:00
    [timezone_type] => 3
    [timezone] => Europe/Dublin
)

说实话,我不确定我做错了什么,createFromFormat中使用的格式看起来与输入字符串的格式匹配,但输出错误。在此示例中,日期是17日而不是16日,时间显示为01:00:00而不是13:00:00

任何想法或指示都会有所帮助,

2 个答案:

答案 0 :(得分:2)

PM被DateTime解释为“向结果添加+12小时”,这会使您的日期失去平衡。

简单解决方案:丢弃PM,或者使用12小时时钟版本(即下午1:00)

答案 1 :(得分:1)

尝试摆脱下午。 24小时制的重点是你不需要上午/下午。

$date = "16 June, 2012, 13:00";
$dateTime = DateTime::createFromFormat("d M, Y, H:i", $date);