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


PHP - convert date from non standard format

我正在解析一个以表单返回日期的提要:

20150129180000

应为 [yyyy

][mm][日][小时][分钟][秒]

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

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

并得到了这个:

640502-03-05 12:33:20

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

Doc

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

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 检索用于计算的时间戳。

与您习惯之前date相比,该格式有些混乱,但这对应于您的日期字符串:

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