2012-07-23 62 views
0

我正在使用AJAX提取RSS源並顯示項目列表。然而,返回的日期超長,需要縮短。JavaScript:將較長的日期解析爲較短的日期

例如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

順便說一句,考慮一個JavaScript模板引擎(例如,把手),這比手動字符串連接更好。 – 2012-07-23 10:37:53

回答

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 
1

看起來你可以在第一個空格之前和最後一個冒號之後去掉所有的東西。這很容易與indexOf[docs]lastIndexOf[docs]substr[docs]

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

當然,你不得不如果格式變化來調整這一點。

+0

技術上正確的答案,但這種解決方案將導致「2012年6月11日17時53分35秒」而不是「2012年6月11日17時53分」。 – 2012-07-23 10:39:29

+0

哦,我沒有注意到秒...那麼它應該是'date.lastIndexOf(':')'...更新。 – 2012-07-23 10:40:18

2
var longdate = "Mon, 11 Jun 2012 17:53:35 PDT"; 
var shortdate = datestr.match(/\d[^:]*:\d\d/)[0]; 
// -> "11 Jun 2012 17:53" 
+0

明確指定格式可能會更好:'/ \ d \ d \ w {3} \ d {4} \ d \ d:\ d \ d \' – 2012-07-23 10:44:38

+0

@FelixKling我對'/ \ d?\ d \ w {3} \ d {4} \ d?\ d:\ d \ d /'模式,但最終決定不發佈它。 – Engineer 2012-07-23 10:46:42

+0

忘了一年......但是,這也取決於月/日<10的處理方式。 – 2012-07-23 10:47:01