Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/251.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 无法提取日期'/日期(1617667200000+;0000)/';_Php_Xero - Fatal编程技术网

Php 无法提取日期'/日期(1617667200000+;0000)/';

Php 无法提取日期'/日期(1617667200000+;0000)/';,php,xero,Php,Xero,我使用的是cakephp4和XeroAPI。我找不到转换从Xero API返回为'/date(1617667200000+0000)/'的日期的代码。它是前10位数字的时间戳,例如$rr=gmdate(“Y-m-d”,1617667200)可以工作,但我不能像这样硬编码字符串,或者只找到前10位。我相信这是一个好消息。我也尝试过使用JSON日期示例,但没有得到任何结果,包括Xero文档 $rr=StringUtil::convertStringToDate($date);//no $rr=g

我使用的是cakephp4和XeroAPI。我找不到转换从Xero API返回为
'/date(1617667200000+0000)/'
的日期的代码。它是前10位数字的时间戳,例如
$rr=gmdate(“Y-m-d”,1617667200)
可以工作,但我不能像这样硬编码字符串,或者只找到前10位。我相信这是一个好消息。我也尝试过使用JSON日期示例,但没有得到任何结果,包括Xero文档

 $rr=StringUtil::convertStringToDate($date);//no
 $rr=gmdate("Y-m-d", $date);  //no

正则表达式可以轻松地提取:

$text = '/Date(1617667200000+0000)/';
preg_match('#^/Date\((\d{10})#', $text, $matches);  // Use # as delimiter.
                                                    // From start match /Date(
                                                    // match and capture next 10 digits

$dt = new DateTime('@'.$matches[1]);                // Create PHP DateTime object from unix timestamp

echo $dt->format('Y-m-d H:i:s');    // 2021-04-06 00:00:00

编辑-更简单的版本,如果数据格式一致,则不需要正则表达式

$text = '/Date(1617667200000+0000)/';
$timeStamp = substr($text, 6,10);
$dt = new DateTime('@'.$timeStamp);                // Create PHP DateTime object from unix timestamp

echo $dt->format('Y-m-d H:i:s');    // 2021-04-06 00:00:00

在我看来,它似乎是以毫秒为单位生成的,所以时间戳
1617667200000
应该除以1000,或者只需将最后3个零切掉,以秒为单位(在PHP中使用)。检查Xero API的文档,了解他们使用的格式。不,我尝试了这个,因为它不是时间戳,因为有太多的digitsgreat解决方案!但是,在cakephp中,由于datetime对象不存在,因此该代码无法正常工作,因此必须有一个解决方案,这样就没有什么大不了的了,debug(date('Y-m-d',$matches[1]);伟大的solutionDateTime存在于自5.2以来的每一个PHP版本中。如果您使用的是一个没有它的版本,那么您应该作为一个紧急事项进行升级。