JavaScript 如何验证字符串日期格式
在本文中,我们将学习在JavaScript中验证字符串日期格式。验证字符串日期格式涉及检查给定的日期是否遵循指定的格式,确保其符合预期的日期、月份和年份组件的安排。
有许多方法可以验证日期格式是否正确,让我们逐个讨论每种方法。
我们将探讨上述所有方法,并通过示例帮助实现它们的基本实现。
方法1:使用内置函数Date.parse()
在这种方法中,我们使用Date.parse()函数,它将一个字符串作为参数以计算自1970年1月1日以来的毫秒数,并以毫秒数返回结果。NaN将检查数字验证,如果返回false,则表示它不是一个有效的日期,否则它是一个有效的日期。
语法:
Date.parse( datestring );
示例: 使用Date.parse()内置函数验证日期格式。
Javascript
// Creating variables
let Date1 = "2023-08-25";
let Date2 = "Invalid date string format";
// Function for validation of date format
function isValidDate(stringDate) {
return !isNaN(Date.parse(stringDate));
}
// Displaying the result
console.log(isValidDate(Date1));
console.log(isValidDate(Date2));
输出
true
false
方法2:使用正则表达式
对于日期格式验证,我们使用正则表达式。这意味着创建一个匹配特定文本格式的模式,可以根据所需的日期格式进行自定义。
格式类型:
- “YYYY-MM-DD”
- “DD-MM-YYYY”
- “DD/MM/YYYY”
语法:
// Format 1: "YYYY-MM-DD"
const regex = /^\d{4}-\d{2}-\d{2}/;
// Format2 : "DD-MM-YYYY"
const regex = /^(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])-(\d{4})/;
// Format3 : "DD/MM/YYYY"
const regex = /^(0[1-9]|1[0-2])\/(0[1-9]|1[0-2])\/\d{4}$/;
示例: 它描述了使用正则表达式以不同方式进行字符串日期验证的方法。
Javascript
let Date1 = "06-24-2013";
let Date2 = "2013-18-09";
// Format 1: "YYYY-MM-DD" (Y-year, M- month, D - date)
function isValidDate(stringDate) {
const regex = /^\d{4}-\d{2}-\d{2}/;
return regex.test(stringDate);
}
console.log(isValidDate(Date1)); // Output: false
console.log(isValidDate(Date2)); // Output: true
// Format2 : "DD-MM-YYYY" (Y-year , M- month , D - date)
let Date3 = "2013-18-09";
let Date4 = "06-24-2013";
function isValidDate1(stringDate) {
const regex = /^(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])-(\d{4})/;
return regex.test(stringDate);
}
console.log(isValidDate1(Date3)); // Output: false
console.log(isValidDate1(Date4)); // Output: true
// Format3 : "DD/MM/YYYY" (Y-year , M- month , D - date)
let Date5 = "2013-18-09";
let Date6 = "06-24-2013";
let Date7 = "06/12/2013";
let Date8 = "06/4/2013";
function isValidDate2(stringDate) {
const regex = /^(0[1-9]|1[0-2])\/(0[1-9]|1[0-2])\/\d{4}$/;
return regex.test(stringDate);
}
console.log(isValidDate2(Date5)); // Output: false
// Month can't be more than 12
console.log(isValidDate2(Date6)); // Output: false
console.log(isValidDate2(Date7)); // Output: true
// Month should have 2 digits
console.log(isValidDate2(Date8)); // Output: false
输出
false
true
false
true
false
false
true
false
方法3:使用instanceof运算符
在这种方法中,我们使用instanceof运算符来判断是否为日期实例。如果是有效的日期对象,则返回true,否则返回false。!isNan()函数可以用于确定Date对象中的日期是否有效。
语法:
let gfg = objectName instanceof objectType
示例: 使用instance of运算符描述字符串日期验证。
Javascript
// Creating variable having different values
let str = "13/2019/jan";
let str1 = "2019/jan/13";
let str2 = "jan/13/2019";
let str3 = "13/13/2019";
// Function for validation of date
function isValidDate(str) {
let date = new Date(str);
let ans = (date instanceof Date) && !isNaN(date);
return ans;
}
// Printing out the result in console
console.log(isValidDate(str)); //true
console.log(isValidDate(str1)); //true
console.log(isValidDate(str2)); //true
//false : invalid daate format
console.log(isValidDate(str3));
输出
true
true
true
false
方法4:使用 Object.prototype.toString.call() 方法
无论日期格式如何,JavaScript 代码 Object.prototype.toString.call(date) = ‘[object Date]’ 经常用于验证一个对象是否是 Date 类的实例。如果一个对象是有效的日期对象且不是 NaN,那么它将返回 true,否则返回 false。
语法:
obj.toString()
示例: 它使用Object.prototype.toString.call()函数描述了对字符串日期进行验证。
JavaScript
// Function for validation of date format
function isValiDate(str) {
let date = new Date(str);
let ans =
Object.prototype.toString.call(date) === "[object Date]"
&& !isNaN(date);
return ans;
}
// DD-MM-YYYY
let str = "13-jan-2019";
// MM-DD-YY
let str1 = "jan-19-13";
// DD-YY-MM
let str2 = "13-19-jan";
// DD/YY/MM
let str3 = "13/19/jan";
// DD/YY/MM (month in number)
let str4 = "13/19/01";
console.log(isValiDate(str));
console.log(isValiDate(str1));
console.log(isValiDate(str2));
console.log(isValiDate(str3));
console.log(isValiDate(str4));
输出
true
true
true
true
false
方法5:使用Moment.js库
Moment.js是一个用于验证日期的JavaScript库。它有一个名为“moment”的函数,它接受两个参数并返回true,如果日期参数与给定的格式参数匹配,否则返回false。
语法:
moment(date , format).isValid();
或者
moment(date: String).isValid()
示例:
这是使用JavaScript中的moment库来验证字符串日期格式的方法。
Javascript
// Importing moment into js file
const moment = require('moment');
// Function for validation of date format
function isValidDate(dateString, format) {
return moment(dateString, format, true).isValid();
}
let Date1 = "2023-04-15";
let Date2 = "15-04-2023";
// Displaying the output
// Output: true
console.log(isValidDate(Date1, "YYYY-MM-DD"));
// Output: false
console.log(isValidDate(Date2, "YYYY-MM-DD"));
输出
true
false