2013-06-27 62 views
1

我工作的Javascript日期格式,我這是在20 Jun 13形式的一個日期,我 需要將其轉換成Date對象,我用Date.parse()返回1 June 2013JavaScript的日期使用的日期格式字符串

var frmDt = '20 Jun 13'; 
alert(Date.parse(frmDt));  

哪個解決方案?

+0

我認爲這可能有所幫助:http://stackoverflow.com/questions/17267230/how-to-convert-the-following-string-to-the-correct-string/17267449#17267449 – HMR

+0

不直接,但它可能幫助:http://www.datejs.com/ –

+2

您需要顯示您使用的確切代碼以及示例輸入。 – JJJ

回答

1

我發現日期處理在JavaScript中變得非常容易,通過使用momentJs,它允許您構造moment對象,它以一種非常自由的方式實際包裝原生javascript Date對象,傳遞多種不同格式的字符串,並且實際上能夠獲取日期對象,這種方式比Date.parse()更可靠。

您還可以傳遞日期格式字符串,所以您的情況將類似moment('20 Jun 13', 'DD MMM YY')

0

我已將我發表的評論中的代碼轉化爲一個函數,使得日,月,日不區分大小寫,分隔符可以是任何字符(只要有一個)。因此,任何格式DD MMM YY或日/月/日或d MMM YY將工作:

function toDate(str){ 
    var months={ 
    "JAN":1, 
    "FEB":2, 
    //... other months 
    "JUN":6, 
    //... other months 
    "DEC":12 
    } 
    var r=/^(\d{1,2}).(\w{3}).(\d{2}$)/; 
    if(r.test(str)===false){ 
     throw new Error("Invalid date string:"+str); 
    } 
    var replaceFunction=function(){ 
    var years=parseInt(arguments[3],10); 
    var m=months[arguments[2].toUpperCase()]; 
    if(typeof m==="undefined"){ 
     throw new Error("Invalid month name:"+arguments[2]); 
    } 
    var days=arguments[1] 
    m=(m<9)?"0"+m:m; 
    days=(days.length===1)?days="0"+days:days; 
    years=(years>50)?years="19"+years:"20"+years; 
    return m+"/"+days+"/"+years; 
    }; 
    return new Date(str.replace(r,replaceFunction)); 
} 
console.log(toDate("20 Jun 13")); 
0

d3.js有解析和格式化日期非常強大的功能。見https://github.com/mbostock/d3/wiki/Time-Formatting

+0

確實包含圖表繪圖庫是解析日期的最佳方法,處理日期解析和格式? – Raibaz

+0

不,我不確定,但是,嘿,我們生活在一個人們包含100K庫的世界中,以獲取DOM操作的一些語法糖。 – 2013-06-27 21:00:51