解析Twitter API日期戳

时间:2010-04-09 22:39:49

标签: php javascript time twitter parsing

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

  

Fri Apr 09 12:53:54 +0000 2010

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

6 个答案:

答案 0 :(得分: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上进行测试。

答案 1 :(得分:32)

strtotime("dateString");将其添加到本机PHP日期格式中,然后您可以使用date()函数将其打印出来。

答案 2 :(得分: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");

答案 3 :(得分:4)

以下是Twitter API的日期格式:

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

答案 4 :(得分:3)

的Javascript。正如@Andy所指出的那样,当涉及到IE时,它将成为一个婊子。因此,最好依靠一致地执行它的库。 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

答案 5 :(得分:0)

仅供参考,在 Java 中是:

SimpleDateFormat sdf = new SimpleDateFormat("EEE MMM dd HH:mm:ss Z yyyy", Locale.ENGLISH);
Date d = sdf.parse(dateAsString);

sdf = new SimpleDateFormat("dd-MM-yyyy");
String s = sdf.format(d);