0

我正在使用 AJAX 拉入 RSS 提要并显示项目列表。但是,返回的日期非常长,需要更短。

例如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所以我需要对那个对象做点什么。

我已经对解析日期进行了快速搜索,但没有找到任何我可以使用的东西。

4

3 回答 3

2
var longdate = "Mon, 11 Jun 2012 17:53:35 PDT";
var shortdate =  datestr.match(/\d[^:]*:\d\d/)[0];
//   ->  "11 Jun 2012 17:53"
于 2012-07-23T10:41:20.457 回答
1

看起来您可以在第一个空格之前和最后一个冒号之后删除所有内容。indexOf 使用[docs]lastIndexOf [docs]substr [docs]很容易:

date = date.substr(date.lastIndexOf(':')).substr(0, date.indexOf(' '));

当然,如果格式发生变化,您必须进行调整。

于 2012-07-23T10:37:04.170 回答
1

您可以使用此正则表达式:

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
于 2012-07-23T10:43:50.870 回答