使用JSON格式的API连接输入具有日期参数。
示例数组
数组([EventList] =>数组([0] =>数组([CheckDate] => /日期(1386834199000 + 0200)/ [ClickDate] => /日期(1386834199000 + 0200)/ [评论] => [CommissionTotal] => 0.54 [货币] =>尝试[日期] => /日期(1386834199000 + 0200)/ [描述] => [EventId] => 2065404 [EventNb] => 1 [MediaNb] => 21 [NetworkId] => 0 [OrderId] => 805832808 [PaymentId] => 0 [价格] => 10.74 [ProgramId] => 209 [状态] => 0 [VoucherCode] => [WebsiteId] => 19887 [PartnerSubId] => 1411-151 [PartnerUniqueId] => 5324a1e4ce795db54a10b32314f35d59)
所有日期都表示为 /日期(毫秒)/ ,以转换我使用的日期
<?php
$url = 'http://login.abc.com/';
$json = file_get_contents($url);
$cXML = json_decode($json, TRUE);
foreach($cXML['EventList'] as $sale)
{
$createdmils= $sale['Date'];
$createdmil= str_replace('/', '', $createdmils);
$mils = $createdmil / 1000;
$createdDate = date("d-m-Y H:i:s", $mils);
echo $createdDate;
}
?>
输出为:01-01-1970 02:00:00
这是不正确的,系统将日期视为N / A
如果数组中的日期只有几毫秒而没有斜杠,那么转换就很容易了。解决方案如何?
答案 0 :(得分:0)
您可以使用正则表达式来获取时间戳和偏移量:
preg_match('~(\d+)\d{3}((?:\+|-)\d+)~', $sale['Date'], $match);
print_r($match);
返回将是:
Array
(
[0] => 1386834199000+0200
[1] => 1386834199
[2] => +0200
)
使用获取的时间戳,您现在可以格式化日期时间。在格式化时间戳时,您还可以考虑偏移(给定一个,或设置您的时区),如果需要的话:
$dt = new DateTime('@' . $match[1]);
$dt = new DateTime($dt->format('Y-m-d H:i:s') . ' ' . $match[2]);
# $dt->setTimezone(new DateTimezone("your_timezone"));
print_r($dt);
return将是DateTime对象:
DateTime Object
(
[date] => 2013-12-12 07:43:19
[timezone_type] => 1
[timezone] => +02:00
)
可以根据您的需要进行格式化:
$createdDate = dt->format('d-m-Y H:i:s');