Xác thực ngày sinh trong 18 năm javascript

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-

console.log(valDate("3/01/2022"))
0

Đầ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

Làm cách nào để xác thực độ tuổi trong JavaScript?

1. Xác thực định dạng ngày dd/MM/yyyy. Ngày sinh (DOB) sẽ được xác thực trước cho định dạng dd/MM/yyyy bằng cách sử dụng Biểu thức chính quy (Regex) . 2. Xác nhận độ tuổi tối thiểu 18+. Sự khác biệt giữa độ tuổi được nhập trong TextBox và Ngày hiện tại tối thiểu là 18 năm.

Làm cách nào để xác thực ngày sinh trong JavaScript?

Xác thực ngày với thời điểm. .
let moment=require('moment') let result = moment("19/12/2021", 'DD/MM/YYYY',true). isValid(); . nhật ký (kết quả)
let moment=require('moment') let result = moment("29/2022", 'YYYY/MM/DD',true). isValid(); . nhật ký (kết quả)
sai

Làm cách nào để tính tuổi theo ngày sinh trong JavaScript?

hàm tính_age(dob) {
var diff_ms = Ngày. bây giờ () - dob. dành thời gian();
var age_dt = Ngày mới(diff_ms);
trả về môn Toán. cơ bụng (tuổi_dt. getUTCFullYear() - 1970);
bảng điều khiển. log(calculate_age(new Date(1982, 11, 4)));

Làm cách nào để xác thực ngày trong JavaScript?

Ở đây, chúng ta có ba phương pháp khác nhau để xác thực ngày. .
Sử dụng Phương thức getTime()
Sử dụng Phương thức isFinite()
Sử dụng phương thức Moment JS isValid()