我有日期输入,我需要存储为DD-MMM-YYYY。我有下面的代码来测试。在大多数情况下,它确保数据采用DD MMM YYYY格式,但我需要包含连字符。例如01-JUN-2015被认为是有效的,但01 / JUN / 2015也是如此。第二个应该失败。我试图将连字符包括在内但没有成功。
function testDate(sender, args) {
var result = isDate(document.getElementById('dateTest').value);
console.log(document.getElementById('dateTest').value);
console.log(result);
$('#result').text(result);
}
//function isDate(txtDate) {
function isDate(currVal) {
if (currVal == '') return false;
//Declare Regex
var rxDatePattern = /^(\d{1,2})(\/|-)(?:(\d{1,2})|(jan)|(feb)|(mar)|(apr)|(may)|(jun)|(jul)|(aug)|(sep)|(oct)|(nov)|(dec))(\/|-)(\d{4})$/i;
var dtArray = currVal.match(rxDatePattern);
if (dtArray == null) return false;
var dtDay = parseInt(dtArray[1]);
var dtMonth = parseInt(dtArray[3]);
var dtYear = parseInt(dtArray[17]);
if (isNaN(dtMonth)) {
for (var i = 4; i <= 15; i++) {
if ((dtArray[i])) {
dtMonth = i - 3;
break;
}
}
}
if (dtMonth < 1 || dtMonth > 12) return false;
else if (dtDay < 1 || dtDay > 31) return false;
else if ((dtMonth == 4 || dtMonth == 6 || dtMonth == 9 || dtMonth == 11) && dtDay == 31) return false;
else if (dtMonth == 2) {
var isleap = (dtYear % 4 == 0 && (dtYear % 100 != 0 || dtYear % 400 == 0));
if (dtDay > 29 || (dtDay == 29 && !isleap)) return false;
}
答案 0 :(得分:0)
我个人认为,我会选择moment.js库来做你想做的事。他们为你准备了所有这些机制,然后是一些:
http://momentjs.com/docs/#/parsing/is-valid/
与自己动手相比,这不是一件麻烦事,而是更有效率。