JavaScript:将较长的日期解析为较短的日期

时间:2012-07-23 10:26:42

标签: javascript

我正在使用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对象做点什么。

我已经快速搜索了解析日期,但找不到任何可以使用的内容。

3 个答案:

答案 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