我使用用戶輸入的形式的日期如下:解析日期,月和年從Javascript「日期」的形式
<input name="name" type="date" id="id"/>
我想知道是否有解析的方式日期,月份和年份,並將它們設置爲不同的變量。我試圖只使用Javascript,而不是PHP。
3個變量將是整數。
謝謝。
我使用用戶輸入的形式的日期如下:解析日期,月和年從Javascript「日期」的形式
<input name="name" type="date" id="id"/>
我想知道是否有解析的方式日期,月份和年份,並將它們設置爲不同的變量。我試圖只使用Javascript,而不是PHP。
3個變量將是整數。
謝謝。
你最好的選擇,如果你接受輸入,並將其轉換爲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
你可以試試這樣: -
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依賴。
這個邏輯似乎是工作,但是當我運行此,從形式,我得到的,「無效的日期日期的輸入「。我認爲輸入應該是一個字符串,這是正確的嗎? –
您需要以yyyy/mm/dd格式解析日期才能使用! –
是的,它必須是字符串! –
您需要將值' - '分開,而不是'/'。例如,
$("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
getMonth()將在1月份返回0,2月份爲1 ... 12月份,因此您必須添加1以獲取正確的月份數量 – vtomic85