2013-10-25 129 views

回答

5

你最好的選擇,如果你接受輸入,並將其轉換爲date,無論是部分還是作爲Date對象分開,是簡單地通過將其輸入值構造一個新的Date對象:

var input = document.getElementById('id').value; 
var d = new Date(input); 

if (!!d.valueOf()) { // Valid date 
    year = d.getFullYear(); 
    month = d.getMonth(); 
    day = d.getDate(); 
} else { /* Invalid date */ } 

通過這種方式,您可以利用Date處理多種輸入格式 - 需要YYYY/MM/DD,YYYY-MM-DD,MM/DD/YYYY,甚至是全文日期(2013年10月25日)等你沒有你寫你自己的解析器。然後通過!!d.valueOf()輕鬆檢查有效日期 - 如果不錯,則爲true;如果不是,則爲false

+0

getMonth()將在1月份返回0,2月份爲1 ... 12月份,因此您必須添加1以獲取正確的月份數量 – vtomic85

0

你可以試試這樣: -

function parseDate(input) { 
    var str= input.split('/'); 
    return new Date(str[0], str[1]-1, str[2]); 
} 

str[1]-1作爲個月從0

開始你也可以檢查Date.parse(string)但這implemetation依賴。

+0

這個邏輯似乎是工作,但是當我運行此,從形式,我得到的,「無效的日期日期的輸入「。我認爲輸入應該是一個字符串,這是正確的嗎? –

+0

您需要以yyyy/mm/dd格式解析日期才能使用! –

+0

是的,它必須是字符串! –

1

您需要將值' - '分開,而不是'/'。例如,

$("input").change(function(e) { 
    var vals = e.target.value.split('-'); 
    var year = vals[0]; 
    var month = vals[1]; 
    var day = vals[2]; 
    console.info(day, month, year); 
}); 

這裏是工作示例的jsbin:http://jsbin.com/ayAjufo/2/edit

相關問題