0

AJAXを使用してRSSフィードを取得し、アイテムのリストを表示しています。ただし、戻ってくる日付は非常に長く、短くする必要があります。

Mon, 11 Jun 2012 17:53:35 PDT11 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 に答える