使用未知格式/日期(1576648800000)/以php格式格式化日期

时间:2019-12-18 07:41:13

标签: php

我正在调用API,并从将日期设为/Date(1576648800000)/这种格式。

我不知道格式是什么?

我想在php中将其转换为Y-m-d H:i:s,有人知道我该怎么做吗?

4 个答案:

答案 0 :(得分:3)

使用Regex从字符串中提取时间戳。

$re = '/\((\d+)\)/m';
$str = '/Date(1576648800000)/';

preg_match($re, $str, $matches);

$d = DateTime::createFromFormat('U', $matches[1] / 1000);
echo $d->format('Y-m-d H:i:s');

结果:

2019-12-18 06:00:00

答案 1 :(得分:2)

这是带有毫秒的时间戳。您可以将其更改为所需的内容。首先,您必须删除毫秒。

$time = 1576648800000;
$time = $time / 1000;

然后您可以使用date()函数对其进行更改:

date('Y-m-d H:i:s',$time)

要从字符串获取整数,请执行以下操作:

$dateString = '/Date(1576648800000)/';
$time = preg_replace('/[^0-9]/', '', $dateString );

答案 2 :(得分:1)

要获取来自/Date(1576648800000)/的时间:

$string = '/Date(1576648800000)/';
$string = intval(substr($string, 6, -2)) / 1000;
date('Y-m-d H:i:s',$string);

答案 3 :(得分:1)

您可以使用正则表达式来过滤值。由于格式使用/Date(some_number)/,因此您只需匹配括号内的数字即可。

代码段:

<?php

$str = '/Date(1576648800000)/';
if(preg_match('/\((\d+)\)/',$str,$matches) === 1){
    $date = date("Y-m-d H:i:s",intval($matches[1]) / 1000);
    echo $date;
}else{
    throw new Exception('Unexpected format received from the API');
}

演示: https://3v4l.org/cOCIq