我正在使用twitter API返回状态更新列表及其创建时间。它将按以下格式返回创建日期:
Fri Apr 09 12:53:54 +0000 2010
最简单的方法(使用PHP或Javascript)将此格式设置为09-04-2010?
答案 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);