我正在调用API,并从将日期设为/Date(1576648800000)/
这种格式。
我不知道格式是什么?
我想在php中将其转换为Y-m-d H:i:s
,有人知道我该怎么做吗?
答案 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');
}