我一直在檢查字符串是否代表Date
。目前我有一個情況,我需要檢查是否"Tue May 16 2017 00:00:00 GMT+0400 (Georgian Standard Time)"
這個字符串代表Date
。我寫了下面的代碼:檢查JavaScript字符串是否代表日期
var tryConvert = new Date(input);
var tryMonth = tryConvert.getMonth();
if (!(tryMonth !== tryMonth)) {//checking for NaN
return true;
}
的問題是,輸入可以是整型96
併成功返回true。期望的行爲是它只應用於Date
實例,ISO
字符串/\d\d\d\d\-\d\d\-\d\dT\d\d\:\d\d\:\d\d/g
和Date.toString()
字符串,如"Tue May 16 2017 00:00:00 GMT+0400 (Georgian Standard Time)"
。我怎樣才能做到這一點?
爲了讓更多在這裏明確的是完整的代碼:
function isDate(input) {
if (!input) {
return false;
}
if (input instanceof Date) {
return true;
}
var rx = /\d\d\d\d\-\d\d\-\d\dT\d\d\:\d\d\:\d\d/g;
var time = rx.exec(input);
if (time) {
return true;
}
if (typeof input === 'string' || input instanceof String) {
var tryConvert = new Date(input);
var tryMonth = tryConvert.getMonth();
if (!(tryMonth !== tryMonth)) {
return true;
}
}
return false;
};
使用該正則表達式? – SLaks
[檢查字符串是否爲日期值]可能的重複(https://stackoverflow.com/questions/7445328/check-if-a-string-is-a-date-value) – Zenoo
moment.js是一個很好的lib用於具有特定模式的解析方法的日期處理。也許它可以幫助? –