javascript - 如何使用 js 验证这种格式(yyyy-mm)的日期?
问题描述
我需要验证日期是否采用这种格式(yyyy-mm)
并确保它在今天之前我的问题是为什么当我使用这个构造函数时我会提前一个月?
new Date(year, month, day, hours, minutes, seconds, milliseconds)
这是完成此类任务的最佳方法吗?谢谢!
function testDate(dateString){
dateString = dateString.trim();
var regEx = /^\d{4}-([0][1-9]|[1][0-2])$/ ;
if(dateString.match(regEx) !== null){
var spArr = dateString.split('-');
var year = parseInt(spArr[0], 10);
var month =parseInt(spArr[1], 10);
var currentDate = new Date();
inputDate = new Date(year, month, 1, 12, 30, 0, 0);
alert('year: ' + year + ' month: ' + month);
alert(inputDate);
if(inputDate > currentDate){
alert('Input date ['+dateString+'] is greater than the current date!');
}
alert('all ok!');
}else{
alert('Input date ['+dateString+'] is of invalid format, correct format: yyyy-MM example: 1975-09');
}
}
testDate('2014-04 ');
testDate('14-04');
testDate('2014-4');
解决方案
无需重新发明轮子。构造Date
函数已经为您处理了。
const testDate = str => {
if (/^\d{4}-([0][1-9]|[1][0-2])$/.test(str)===null) return false;
let now = new Date();
try {
return new Date(str)<new Date();
} catch(err) {
console.log(err);
return false;
}
}
console.log(testDate('2014-04 '));
console.log(testDate('14-04'));
console.log(testDate('2014-04'));
推荐阅读
- php - 登录数据库连接失败
- java - 如何解决这个 GPS 问题?
- mysql - 限制某些数据在同一个msql表中输入次数的mysql代码
- c# - 在 UWP 应用程序上启用/禁用驱动程序
- c# - WCF Rest 自托管证书安全服务返回 401 未经授权
- c - 在 Macro 或 typedef 的帮助下,C 中的有效表达式:(x) ((x) - 1)
- excel - 可以在同一列中使用不同的数据系列(Excel、堆积条形图、多类别)
- c - 代码在我的系统上运行良好,但是当我将它提交给应该检查它的机器人时会导致堆栈粉碎错误
- python - tkinter - 如何调整相对于复选框图像的文本位置?
- python - 朴素贝叶斯中不同的特征重要性