PHP - 从非标准格式转换日期

时间:2015-02-02 20:44:23

标签: php date

我正在解析一个以表格形式返回日期的Feed:

20150129180000

应该是[yyyy] [mm] [dd] [小时] [分钟] [秒]

我尝试使用php date()函数格式化它:

date('Y-m-d H:i:s', $event['start-dt'])

得到了这个:

640502-03-05 12:33:20

显然不对。有没有一种平滑的转换方法,或者我只是需要手动拼接字符串?

3 个答案:

答案 0 :(得分:4)

Doc

$date = DateTime::createFromFormat('YmdHis', '20150129180000');
echo $date->format('Y-m-d H:i:s');

答案 1 :(得分:3)

您可以使用preg_replace格式化字符串

$date_str = preg_replace("/^(\d){4}(\d){2}(\d){2}(\d){2}(\d){2}(\d){2}/","$1-$2-$3 $4:$5:$6",$event["start-dt"]);
date('Y-m-d H:i:s', strtotime($date_str));

或使用php' DateTime对象

$date = new DateTime($date_str);

或者更好的是,使用DataTime createFromFormat方法

$format = "YmdGis";
$dateObj = DateTime::createFromFormat ( $format, $event['start-dt'] ); 

然后,如果需要,您可以使用getTimestamp来检索计算的时间戳。

答案 2 :(得分:3)

date相比,格式有些令人困惑,直到您习惯了它,但这与您的日期字符串相对应:

$date = DateTime::createFromFormat('YmdGis', '20150129180000');
echo $date->format('Y-m-d H:i:s');