JavaScript 如何验证字符串日期格式

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

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程