从未知格式/日期(157664880000)以php格式设置日期/

从未知格式/日期(157664880000)以php格式设置日期/,php,Php,我正在调用API,并从中获取日期为/Date(157664800000)/此格式 我不知道格式是什么 我想把它转换成php中的Y-m-dh:I:s,有人知道我怎么做吗?这是带有毫秒的时间戳。你可以把它改成你想要的。首先,您必须在几秒钟内删除 $time = 1576648800000; $time = $time / 1000; 然后,您可以使用date()函数对其进行更改: date('Y-m-d H:i:s',$time) 要从字符串获取整数,请执行以下操作: $dateString =

我正在调用API,并从中获取日期为
/Date(157664800000)/
此格式

我不知道格式是什么


我想把它转换成php中的
Y-m-dh:I:s
,有人知道我怎么做吗?

这是带有毫秒的时间戳。你可以把它改成你想要的。首先,您必须在几秒钟内删除

$time = 1576648800000;
$time = $time / 1000;
然后,您可以使用
date()
函数对其进行更改:

date('Y-m-d H:i:s',$time)
要从字符串获取整数,请执行以下操作:

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

这是带有毫秒的时间戳。你可以把它改成你想要的。首先,您必须在几秒钟内删除

$time = 1576648800000;
$time = $time / 1000;
然后,您可以使用
date()
函数对其进行更改:

date('Y-m-d H:i:s',$time)
要从字符串获取整数,请执行以下操作:

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

要从
/Date(157664880000)/
获取时间,请执行以下操作:

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

要从
/Date(157664880000)/
获取时间,请执行以下操作:

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

使用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

使用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

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

片段:

<?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');
}

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

片段:

<?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');
}

数字是以毫秒为单位的时间戳,等于2019年12月18日星期三06:00:00(GMT)。如何解析字符串
/Date(157664800000)/
并将其转换为
Y-m-d H:I:s
此格式?如果我得到
157664880000
timestamp,我可以解析它。谢谢你的指导。我被困在这一点上了。它可能来自默认的C#MVC脚本序列化程序生成的JSON(也可能是其他的?)。这是一个Javascript技巧,在这里,对代码求值将实例化日期。它非常有用,因为数字是以毫秒为单位的时间戳,等于2019年12月18日星期三06:00:00(GMT)。如何解析字符串
/Date(157648800000)/
并将其转换为
Y-m-d H:I:s
此格式?如果我得到
157664880000
timestamp,我可以解析它。谢谢你的指导。我被困在这一点上了。它可能来自默认的C#MVC脚本序列化程序生成的JSON(也可能是其他的?)。这是一个Javascript技巧,在这里,对代码求值将实例化日期。谢谢,这很没用,@ttrasn。谢谢你的回答。我知道如何解析时间戳。但是我得到了这个
/Date(157664880000)/
格式。首先,我需要将这个字符串解析为时间戳,然后才能将其转换。@DilipHirapara一些API返回带有时间戳的字符串。您必须使用
substr
函数解析它。谢谢,@ttrasn。谢谢你的回答。我知道如何解析时间戳。但是我得到了这个
/Date(157664880000)/
格式。首先,我需要将这个字符串解析为时间戳,然后才能将其转换。@DilipHirapara一些API返回带有时间戳的字符串。您必须使用
substr
函数对其进行解析。您能否解释更多的
preg\u match\u all($re,$str,$matches,preg\u SET\u ORDER,0)这行。这个解决方案对我来说非常有效。但是假设我没有得到相同类型的格式,它会工作吗?正则表达式(RegEx)匹配括号之间的数字(d+
模式),并提取到第一个匹配中
$matches[1]
。我刚改为
preg\u match
以获得更简单的代码。投票是因为它使用了DateTime类。你能解释一下更多的
preg\u match\u all($re,$str,$matches,preg\u SET\u ORDER,0)这行。这个解决方案对我来说非常有效。但是假设我没有得到相同类型的格式,它会工作吗?正则表达式(RegEx)匹配括号之间的数字(d+
模式),并提取到第一个匹配中
$matches[1]
。我刚刚更改为
preg\u match
以获得更简单的代码。投票是因为它使用DateTime类。