2012-11-04 40 views
1

我一直在使用json和PHP来玩Bing API。阵列吐出下面的日期:如何将此时间戳转换为PHP? Bing Maps API

[end] => /Date(1354867200000)/ 
[lastModified] => /Date(1349441488000)/ 

我以为这是一个unix时间戳,但它我不认为它是。我所做的就是这样的

$last_updated = $resource->lastModified; 
$last_updated_timestamp = preg_replace('/[^0-9.]*/','',$last_updated); 

一个的preg_replace然后试图将其转换为日期

$last_updated_date = date('l F d Y g:i:s A',$last_updated_timestamp); 

的结果,它的显示我要的日期范围从1967年至2000年回到这是一个我不知道的另一种时间戳?如果是这样,我该如何纠正?任何帮助,将不胜感激!

回答

1

数字部分为毫秒自启用时间(1970年1月1日午夜  — unix时间戳的毫秒版本)。这是用JSON表示日期的一种相当传统的方式(因为JSON没有日期类型)。

所以getdate(theNumber/1000)会给你的日期(因为getdate需要秒,而不是毫秒,自纪元以来)。

+0

谢谢!我试了一下,但还是有些不尽人意。借助Bing Maps API,它应该能够显示最新的内容,但时间在2012年6月29日至10月29日期间会随机显示。它们都是随机排列的。我认为微软会更有意义地下令降级并提供最新的信息。 代码看起来是这样的: \t $ LAST_UPDATED = preg_replace函数( '/ [^ 0-9] * /', '',$ LAST_UPDATED); \t $ last_updated = getdate($ last_updated/1000); \t \t $ last_updated_timestamp = $ last_updated [0]; \t $ last_updated_date = date('F d Y g:i:s A',$ last_updated_timestamp); – user1701252

+0

@ user1701252这里有一些关于'date()'如果你还没有工作的信息。 http://php.net/manual/en/function.date.php混合日期可能来自格式错误的日期格式。 –

+0

@ user1701252:我无法帮助您解决Bing问题或Microsoft是否以合理的方式处理问题。 :-)我可以告诉你,'/ Date(nnnn)/'是用JSON表示日期的**标准方法,'nnnn'是从Epoch开始的毫秒数。您问题中的第一个日期是2012年12月07日格林威治标准时间午夜。您问题中的第二个日期是2012年10月5日12:51:28 GMT(对我来说,英国夏令时13:51:28)。 –

0

如果你想要做的是转变Unix时间戳为日期格式,您可以通过执行以下操作做到这一点:

date("F j, Y g:i a", strtotime($unix_timestamp)); 

$unix_timestamp在这种情况下,您的UNIX时间戳。 您可以随时打印出来用于测试目的,方法是在其之前添加echo

所以在这种情况下,它可能是:

$last_updated_date = date("F j, Y g:i a", strtotime($last_updated_timestamp));