2014-02-13 54 views
0

希望你能幫助我,我想爲什麼我寫了這個解析日期功能無法正常工作的2014年5月29日(以及可能的其他日期)解析日期功能不工作的一些日期

摸出
function parseDate(dateString){ 
    //Accepts DD/MM/YYYY HH:MM 
    var date = new Date(); 
    date.setDate (parseInt(dateString.substr(0, 2), 10)); 
    date.setMonth (parseInt(dateString.substr(3, 2), 10) - 1); 
    date.setYear (parseInt(dateString.substr(6, 4), 10)); 
    date.setHours (parseInt(dateString.substr(11, 2), 10)); 
    date.setMinutes (0); 
    date.setSeconds (0); 
    date.setMilliseconds (0); 
    return date; 
} 


$('#result').text(parseDate('29/05/2014 08:00')); 
//Result Thu May 01 2014 08:00:00 GMT+1000 (EST) 

的鏈接小提琴是在這裏:http://jsfiddle.net/2k4Ux/

其可能是一些愚蠢的,但我不能在此刻看着辦吧。

回答

3

你應該改變你的操作順序,如:http://jsfiddle.net/maximgladkov/m6sUM/1/

function parseDate(dateString){ 
    //Accepts DD/MM/YYYY HH:MM 
    var date = new Date(); 
    date.setYear (parseInt(dateString.substr(6, 4), 10)); 
    date.setMonth (parseInt(dateString.substr(3, 2), 10) - 1); 
    date.setDate (parseInt(dateString.substr(0, 2), 10)); 
    date.setHours (parseInt(dateString.substr(11, 2), 10)); 
    date.setMinutes (0); 
    date.setSeconds (0); 
    date.setMilliseconds (0); 

    return date; 
} 

$('#result').text(parseDate('29/05/2014 08:00')); 

並非所有月份有28天以上,所以,如果你年份和月份設置,Date對象不能確定,如果日期有效。

+0

謝謝!我知道它會是這樣的。非常感謝快速響應! – hireSwish

+0

請標記答案爲已接受,如果它幫助你:)謝謝! –

2

你可以這樣做:

function parseDate(dateString) { 
    var parts = dateString.match(/\d+/g); 
    return new Date(
     parts[2], parts[1] - 1, parts[0], // date 
     parts[3], parts[4] // time 
    ); 
} 
+0

這可能是比我使用的更優雅的解決方案謝謝。 – hireSwish

+0

@hireSwish如果有幫助,很高興。 – leaf