我正在使用AJAX来提取RSS源并显示项目列表。然而,回来的日期超长,需要更短。
e.g。 Mon, 11 Jun 2012 17:53:35 PDT
成为11 Jun 2012 17:53
是否可以使用javascript执行此操作?
代码目前看起来像这样:
for(var i = 0; i < feed.items.length && i < 5; i++) {
var item = feed.items[i];
html += '<li>'
+ item.updated;
html += ' | <span class="title">'
+ '<a href="'
+ item.link
+ '">'
+ item.title
+ '</a>'
+ '</span></li>';
}
所以我需要对那个item.updated
对象做点什么。
我已经快速搜索了解析日期,但找不到任何可以使用的内容。
答案 0 :(得分:2)
var longdate = "Mon, 11 Jun 2012 17:53:35 PDT";
var shortdate = datestr.match(/\d[^:]*:\d\d/)[0];
// -> "11 Jun 2012 17:53"
答案 1 :(得分:1)
看起来你可以在第一个空格之前和最后一个冒号之后删除所有内容。使用indexOf
[docs],lastIndexOf
[docs]和substr
[docs]:
date = date.substr(date.lastIndexOf(':')).substr(0, date.indexOf(' '));
当然,如果格式发生变化,你必须调整它。
答案 2 :(得分:1)
您可以使用此RegEx:
var result = "Mon, 11 Jun 2012 17:53:35 PDT".replace(
/[A-Z][a-z]{2}, (\d+) ([A-Z][a-z]{2}) (\d+) (\d+):(\d+):\d+ [A-Z]{3}/,
"$1 $2 $3 $4:$5"
); // result = "11 Jun 2012 17:53"
甚至更简单:
var result = "Mon, 11 Jun 2012 17:53:35 PDT".replace(
/[A-Z][a-z]{2}, (\d+ [A-Z][a-z]{2} \d+ \d+:\d+):\d+ [A-Z]{3}/,
"$1"
); // result = "11 Jun 2012 17:53"
更简单:
var result = "Mon, 11 Jun 2012 17:53:35 PDT".match(
/(\d+ [A-Z][a-z]{2} \d+ \d+:\d+)/
)[0]; // result = "11 Jun 2012 17:53"
但如果你关心时区,即想要显示客户的时区,你可以这样做:
var Result = new Date("Mon, 11 Jun 2012 17:53:35 PDT").toString().match(
/([A-Z][a-z]{2} \d+ \d+ \d+:\d+)/
)[0]; // result = "Jun 12 2012 08:53" // client's timezone, GMT+8 for example