Xác thực ngày tháng trong JavaScript đóng một vai trò quan trọng vì mọi người trên toàn cầu tuân theo nhiều định dạng khác nhau khi nhập ngày tháng. Xác thực ngày trong JavaScript có nghĩa là kiểm tra xem ngày do người dùng nhập có hợp lệ hay không. Bất kỳ định dạng nào mà người dùng đã nhập, nó sẽ được xác thực để chúng tôi dễ dàng làm việc với nó. Các định dạng ngày khác nhau là DD/MM/YYYY, MM/DD/YYYY và YYYY/MM/DD
Phạm vi
- Bài viết này đề cập đến việc xác thực ngày tháng trong JavaScript
- Các phương pháp khác nhau để xác thực ngày tháng cùng với các ví dụ của chúng sẽ được giải thích chi tiết
Giới thiệu
Trong cuộc sống hàng ngày của chúng ta, có rất nhiều trang web mà chúng ta phải nhập ngày tháng năm sinh, năm tốt nghiệp và đại học, v.v. Tuy nhiên, điều quan trọng là nhà phát triển phải kiểm tra xem ngày do người dùng nhập có hợp lệ hay không. Để làm được điều đó, trước tiên chúng tôi thực hiện xác thực ngày tháng trong JavaScript. Các định dạng ngày khác nhau là- DD/MM/YYYY, MM/DD/YYYY, YYYY/MM/DD. Ở nhiều nơi, dấu / được thay thế bằng '. ' hoặc '-' làm dấu phân cách giữa ngày/tháng/năm
Đầu tiên, chúng tôi sẽ kiểm tra xem ngày có hợp lệ hay không. Chúng tôi sẽ viết một biểu thức regex để khớp với ngày. Nếu ngày khớp với định dạng, chúng tôi kiểm tra xem nó có hợp lệ hay không. Chúng ta sẽ chia ngày thành 3 phần bằng cách sử dụng hàm split[]
Nếu tháng và ngày nằm ngoài phạm vi, tôi. e. , nếu phần ngày vượt quá tổng số ngày trong tháng đó hoặc đối với năm nhuận nếu tháng không khớp với ngày thì ta trả về false
Cuối cùng, nếu tất cả các điều kiện là đúng, chúng tôi trả về đúng định dạng đúng
Mã số-
let dateformat = /^[0?[1-9]|1[0-2]][\/][0?[1-9]|[1-2][0-9]|3[01]][\/]\d{4}$/; // Matching the date through regular expression if [date.match[dateformat]] { let operator = date.split['/']; // Extract the string into month, date and year let datepart = []; if [operator.length > 1] { datepart = date.split['/']; } let month = parseInt[datepart[0]]; let day = parseInt[datepart[1]]; let year = parseInt[datepart[2]]; // Create a list of days of a month let ListofDays = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; if [month == 1 || month > 2] { if [day > ListofDays[month - 1]] { //to check if the date is out of range return false; } } else if [month == 2] { let leapYear = false; if [[![year % 4] && year % 100] || ![year % 400]] leapYear = true; if [[leapYear == false] && [day >= 29]] return false; else if [[leapYear == true] && [day > 29]] { console.log['Invalid date format!']; return false; } } } else { console.log["Invalid date format!"]; return false; } return "Valid date"; }
**Giải trình- **
Đầu tiên, biểu thức regex được khớp và sau đó được kiểm tra. Một mảng ngày được tạo và phần tháng được trích xuất trước, chỉ mục thứ 0 sẽ có tháng, chỉ mục thứ nhất sẽ có ngày và chỉ mục thứ 2 sẽ có năm theo định dạng đã cho. Bây giờ chúng tôi sẽ kiểm tra xem tháng có nằm ngoài phạm vi hay không bằng cách kiểm tra xem ngày của phần ngày có lớn hơn tổng số ngày trong tháng đó không. Xác thực tiếp theo sẽ là kiểm tra xem năm đã cho có phải là năm nhuận hay không. Nếu không, trả về sai
Bây giờ nếu chúng ta gọi hàm,
console.log[valDate["3/01/2022"]]
Chương trình sẽ mang lại đầu ra sau-
Nếu chúng tôi sử dụng một ngày không hợp lệ,
console.log[valDate["43/01/2022"]]
Chương trình sẽ mang lại đầu ra sau-
Invalid date format! false
Mã tương tự như ở trên, nơi chúng tôi đã xác thực định dạng MM/DD/YYYY. Để xác thực DD/MM/YYYY, thay đổi mà chúng tôi thực hiện là biểu thức chính quy và chuỗi năm, tháng và ngày
Mã số-
function valDate[date] { let dateformat = /^[0?[1-9]|[1-2][0-9]|3[01]][\/][0?[1-9]|1[0-2]]/; // Matching the date through regular expression if [date.match[dateformat]] { let operator = date.split['/']; // Extract the string into month, date and year let datepart = []; if [operator.length > 1] { datepart = date.split['/']; } let day = parseInt[datepart[0]]; let month = parseInt[datepart[1]]; let year = parseInt[datepart[2]]; // Create a list of days of a month let ListofDays = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; if [month == 1 || month > 2] { if [day > ListofDays[month - 1]] { //to check if the date is out of range console.log["Invalid date"] return false; } } else if [month == 2] { let leapYear = false; if [[![year % 4] && year % 100] || ![year % 400]] leapYear = true; if [[leapYear == false] && [day >= 29]] { console.log["Invalid date"] return false; } else if [[leapYear == true] && [day > 29]] { console.log['Invalid date format!']; return false; } } } else { console.log["Invalid date format!"]; return false; } return "Valid date"; }
Giải trình-
Đầu tiên, biểu thức regex được khớp và sau đó được kiểm tra
Một mảng ngày được tạo và phần ngày được trích xuất trước, chỉ mục thứ 0 sẽ có ngày, chỉ mục thứ nhất sẽ có tháng và chỉ mục thứ 2 sẽ có năm theo định dạng đã cho. Bây giờ chúng tôi sẽ kiểm tra xem tháng có nằm ngoài phạm vi hay không bằng cách kiểm tra xem ngày của phần ngày có lớn hơn tổng số ngày trong tháng đó không. Xác thực tiếp theo sẽ là kiểm tra xem năm đã cho có phải là năm nhuận hay không. Nếu không, trả về sai
Bây giờ nếu chúng ta gọi hàm,
console.log[valDate["31/02/2022"]]
Chương trình sẽ mang lại đầu ra sau-
Nếu chúng tôi sử dụng một ngày hợp lệ,
console.log[valDate["31/01/2022"]]
Chương trình sẽ mang lại đầu ra sau-
Mã tương tự như ở trên, nơi chúng tôi đã xác thực định dạng MM/DD/YYYY và DD/MM/YYYY. Để xác thực YYYY/MM/DD, thay đổi mà chúng tôi thực hiện là biểu thức chính quy và chuỗi năm, tháng và ngày
Mã số-
function isValidDate[date] { // Date format: YYYY-MM-DD var datePattern = /^[[12]\d{3}-[0[1-9]|1[0-2]]-[0[1-9]|[12]\d|3[01]]]/; // Check if the date string format is a match var matchArray = date.match[datePattern]; if [matchArray == null] { return false; } // Remove any non digit characters var dateString = date.replace[/\D/g, '']; // Parse integer values from the date string var year = parseInt[dateString.substr[0, 4]]; var month = parseInt[dateString.substr[4, 2]]; var day = parseInt[dateString.substr[6, 2]]; // Define the number of days per month var daysInMonth = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; // Leap years if [year % 400 == 0 || [year % 100 != 0 && year % 4 == 0]] { daysInMonth[1] = 29; } if [month < 1 || month > 12 || day < 1 || day > daysInMonth[month - 1]] { return false; } return true; }
Giải trình-
Đầu tiên, biểu thức regex được khớp và sau đó được kiểm tra. Một mảng ngày được tạo và phần ngày được trích xuất trước, chỉ mục thứ 0 sẽ có năm, chỉ mục thứ nhất sẽ có tháng và chỉ mục thứ 2 sẽ có ngày theo định dạng đã cho. Bây giờ chúng tôi sẽ kiểm tra xem tháng có nằm ngoài phạm vi hay không bằng cách kiểm tra xem ngày của phần ngày có lớn hơn tổng số ngày trong tháng đó không. Xác thực tiếp theo sẽ là kiểm tra xem năm đã cho có phải là năm nhuận hay không. Nếu không, trả về sai
Vì vậy, trong khi chúng ta gọi hàm,
________số 8_______Đầu ra-
Có một thư viện JavaScript được gọi là khoảnh khắc. js được sử dụng để xác thực ngày dễ dàng. Để sử dụng thư viện này, trước tiên, chúng ta cần tải xuống. Phương thức moment[] hiện tại được sử dụng để kiểm tra xem ngày có hợp lệ hay không
Hàm moment[] lấy ba tham số làm đầu vào, tham số đầu tiên là ngày mà chúng ta muốn xác thực tham số thứ hai là định dạng i. e. , DD/MM/YYYY, v.v. và tham số cuối cùng là tùy chọn, nếu nó được đặt thành true thì nó sẽ sử dụng phân tích cú pháp nghiêm ngặt. Trong phân tích cú pháp nghiêm ngặt, định dạng và đầu vào phải khớp chính xác. Cuối cùng, chúng ta sử dụng hàm isValid[] để kiểm tra xem ngày nhập vào có hợp lệ không
Ví dụ 1-
let moment=require['moment'] let result = moment["19/12/2021", 'DD/MM/YYYY',true].isValid[]; console.log[result]
Đầu ra-
Ví dụ 2-
0console.log[valDate["3/01/2022"]]
Đầu ra-
Ngày JavaScript. Phương thức parse[] được sử dụng để kiểm tra xem ngày đã cho là hợp lệ hay không hợp lệ. Hàm trả về NaN nếu ngày đã cho không hợp lệ hoặc nếu không thì nó trả về số giây đã trôi qua kể từ ngày 1 tháng 1 năm 1970. Bằng cách này, chúng tôi có thể kiểm tra tính xác thực của ngày đã cho