无法提取日期 '/Date(1617667200000+0000)/'
cant extract date '/Date(1617667200000+0000)/'
我正在使用 cakephp4 和 Xero API。我找不到用于转换从 Xero API 返回为 '/Date(1617667200000+0000)/'
的日期的代码。它是前 10 位数字的时间戳,例如 $rr=gmdate("Y-m-d", 1617667200);
可以工作,但我不能像这样硬编码字符串或只找到前 10 位数字。我相信这是一个 StringUtil。我也尝试使用 JSON 日期示例,但没有得到任何地方,包括 Xero 文档。
$rr=StringUtil::convertStringToDate($date);//no
$rr=gmdate("Y-m-d", $date); //no
Converting json results to a date
正则表达式可以轻松提取:
$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
我正在使用 cakephp4 和 Xero API。我找不到用于转换从 Xero API 返回为 '/Date(1617667200000+0000)/'
的日期的代码。它是前 10 位数字的时间戳,例如 $rr=gmdate("Y-m-d", 1617667200);
可以工作,但我不能像这样硬编码字符串或只找到前 10 位数字。我相信这是一个 StringUtil。我也尝试使用 JSON 日期示例,但没有得到任何地方,包括 Xero 文档。
$rr=StringUtil::convertStringToDate($date);//no
$rr=gmdate("Y-m-d", $date); //no
Converting json results to a date
正则表达式可以轻松提取:
$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