2011-05-19 66 views
1

我一直在用JavaScript掙扎超過一個小時,想出了一個解決方案 - 請求您的幫助!關於格式的Javascript日期問題

RSS源生成此格式的每篇文章的日期2011-05-18T17:32:43Z。我怎樣才能讓它看起來像17:32 18.05.2011

預先感謝您!

+1

可能重複的[在javascript中格式化日期](http://stackoverflow.com/questions/1056728/formatting-a-date-in-javascript) – Jeremy 2011-05-19 18:47:44

回答

1

假設您已經解析的RSS日期爲JS Date對象(可能會非常棘手,因爲許多Date.parse實現不接受這樣的ISO-8601日期)...

//var d=new Date(/*...*/) 
// 17:32 18.05.2011 
pad(d.getHours())+':'+d.getMinutes()+' '+ 
    pad(d.getDate())+'.'+pad(d.getMonth()+1)+d.getFullYear(); 

getMonth返回基於0-11個月)

...你也會希望當月某種零緩衝(在你的例子),並可能日,小時(視)....

function pad(val,len) { 
    var s=val.toString(); 
    while (s.length<len) {s='0'+s;} 
    return s; 
} 
從與字符串

可選>字符串,你可以使用:

function reformat(str) { 
    var isodt=string.match(/^\s*(\-?\d{4}|[\+\-]\d{5,})(\-)?(\d\d)\2(\d\d)T(\d\d)(:)?(\d\d)?(?:\6(\d\d))?([\.,]\d+)?(Z|[\+\-](?:\d\d):?(?:\d\d)?)\s*$/i); 
    if (isodt===null) {return '';} // FAILED 
    return isodt[5]+':'+isodt[7]+' '+isodt[4]+'.'+isodt[3]+'.'+isodt[1]; 
} 
0

您可以創建一個新的Date,得到碎片了出來,並串連一切:

function parse(date) { 
    var d = new Date(date) 
    return d.getHours() + ":" + d.getMinutes() 
      + " " + d.getDate() + "." + (d.getMonth()+1) 
      + "." + d.getFullYear(); 
}