Menu

October 6, 2018

Validate ngày tháng và thời gian trong Javascript

Giới thiệu

Việc kiểm tra ngày tháng và thời gian trong javascript sẽ bao gồm 2 việc là kiểm tra format và kiểm tra tính hợp lê.

Kiểm tra thời gian hợp lệ:

/**
 * Check time 24h format
 * @param value
 * @returns {boolean}
 */
function checkTime24h(value) {
    return value && /^([01]\d|2[0-3])(:[0-5]\d){0,2}$/.test(value);
}

Kiểm tra ngày tháng theo format và tính hợp lệ:

/**
 * Check date valid in dd/mm/yyyy format and valid in value
 * @param value
 * @returns {boolean}
 */
function checkDateFormat(value) {
    var regex, date;
    regex = /^(\d{2})\/(\d{2})\/(\d{4})$/;

    if (isEmpty(value) || !regex.test(value)) {
        return false;
    }

    if (!isValidDate(value)) {
        return false;
    }

    date = new Date(value.replace(regex, '$2/$1/$3'));

    return parseInt(RegExp.$2, 10) === 1 + date.getMonth() &&
        parseInt(RegExp.$1, 10) === date.getDate() &&
        parseInt(RegExp.$3, 10) === date.getFullYear();
}

Một phương thức khác để kiểm tra ngày tháng hợp lê:

/**
 * Check value is a valid date
 * @param dateString format dd/mm/yyyy
 * @returns {boolean}
 */
function isValidDate(dateString) {
    var dateData = dateString.split('/');
    var year = dateData[2];
    var month = dateData[1];
    var day = dateData[0];
    var date = new Date(year, month - 1, day);

    return (date.getFullYear() == year) && (date.getMonth() == month - 1) && (date.getDate() == day);
}

Kiểm tra khoảng thời gian hợp lệ:

/**
 * Check datetime from-to range valid
 * @param dateFrom
 * @param dateTo
 */
function checkDateTimeRange(dateFrom, dateTo) {
    var fromValue = new Date(dateFrom);
    var toValue = new Date(dateTo);

    return fromValue.getTime() <= toValue.getTime();
}

Code demo

See the Pen Validate date and time by Duc Dao (@ducdh) on CodePen.


References

https://github.com/magento/magento2/blob/2.3-develop/lib/web/mage/validation.js

https://gomakethings.com/how-to-check-if-a-date-is-valid-with-vanilla-javascript/

https://ctrlq.org/code/20109-javascript-date-valid

https://wiki.base22.com/btg/how-to-compare-dates-in-javascript-81791002.html

 

Go to top of page