解析Twitter API日期戳

问题描述 投票:27回答:6

我正在使用twitter API返回状态更新及其创建时间的列表。它以以下格式返回创建日期:

[Fri Apr 09 12:53:54 +0000 2010

最简单的方法(使用PHP或Javascript)将其格式化为09-04-2010?

php javascript time twitter parsing
6个回答
33
投票

[strtotime("dateString");将其转换为本地PHP日期格式,然后您可以使用date()函数将其打印出来,如您所愿。


47
投票

跨浏览器,通过JavaScript进行时区识别:

var s = "Fri Apr 09 12:53:54 +0000 2010";

var date = new Date(
    s.replace(/^\w+ (\w+) (\d+) ([\d:]+) \+0000 (\d+)$/,
        "$1 $2 $4 $3 UTC"));

在IE,Firefox,Safari,Chrome和Opera上测试。


6
投票

如果您从字符串中删除+0000,则JavaScript可以解析该日期:

var dStr = "Fri Apr 09 12:53:54 +0000 2010";
dStr = dStr.replace("+0000 ", "") + " UTC";
var d = new Date(dStr);

Chrome-我怀疑还有其他一些非IE浏览器-可以将其与字符串中的+0000进行解析,但是出于互操作性考虑,您也可以删除它。

PHP可以使用strtotime解析日期:

strtotime("Fri Apr 09 12:53:54 +0000 2010");

4
投票

这里是Twitter API的日期格式:

Sat Jan 19 20:38:06 +0000 2013
"EEE MMM dd HH:mm:ss Z yyyy" 

3
投票

Javascript。正如@Andy指出的那样,在IE方面将是一个ch子。因此,最好依靠一个能够持续执行此操作的库。 DateJS似乎是一个不错的库。

添加库后,您将其解析并格式化为:

var date = Date.parse("Fri Apr 09 12:53:54 +0000 2010");
var formatted = date.toString("dd-MM-yyyy");

在PHP中,您可以使用日期函数或DateTime类进行相同的操作(自PHP 5.2.0起可用:]

$date = new DateTime("Fri Apr 09 12:53:54 +0000 2010");
echo $date->format("d-m-Y"); // 09-04-2010

0
投票

FYI,在Java中是:

SimpleDateFormat sdf = new SimpleDateFormat("EEE MMM dd HH:mm:ss Z yyyy", Locale.ENGLISH);
Date d = sdf.parse(dateAsString);
© www.soinside.com 2019 - 2024. All rights reserved.