我正在使用Twitter API返回一系列状态更新及其创建时间。它以以下格式返回创建日期:
Fri Apr 09 12:53:54 +0000 2010
最简单的方式是什么(使用PHP或Javascript),可以将其格式化为09-04-2010?
我正在使用Twitter API返回一系列状态更新及其创建时间。它以以下格式返回创建日期:
Fri Apr 09 12:53:54 +0000 2010
最简单的方式是什么(使用PHP或Javascript),可以将其格式化为09-04-2010?
通过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上进行过测试。
strtotime("dateString");
将日期字符串转换为原生的PHP日期格式,然后您可以使用date()
函数以您想要的方式打印出来。
如果从字符串中删除+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");
new Date()
会在本地时区解析它。 - Ates GoraldStr = dStr.replace("+0000 ", "") + " GMT";
- Ates Goral这是Twitter API的日期格式:
Sat Jan 19 20:38:06 +0000 2013
"EEE MMM dd HH:mm:ss Z yyyy"
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
NaN
。IE无法处理+0000
。 - Andy ESimpleDateFormat 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);
在 Swift 中:
let dateString = "Fri Apr 09 12:53:54 +0000 2010"
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "EEE MMM dd HH:mm:ss Z yyyy"
let date = dateFormatter.date(from: dateString)