UNPKG

apphouse

Version:

Component library for React that uses observable state management and theme-able components.

52 lines (48 loc) 1.42 kB
/** * Check if a string is a valid date. * * @param {string} dateString - The string to check. * @returns {boolean} - True if the string is a valid date, false otherwise. */ export function isValidDate(dateString?: string) { if (!dateString) { return false; } // Try to create a Date object from the given string const date = new Date(dateString); // manually check for leap year if (date.getMonth() === 1 && date.getDate() === 29) { const year = date.getFullYear(); if ((year % 4 === 0 && year % 100 !== 0) || year % 400 === 0) { return true; } return false; } const dateStringParts = dateString.split('-'); // manually check for month > 12 if (parseInt(dateStringParts[1], 10) > 12) { return false; } // manually check for day > 31 if (parseInt(dateStringParts[2], 10) > 31) { return false; } // manually handle february if (parseInt(dateStringParts[1], 10) === 2) { // manually check for feb 30 if (parseInt(dateStringParts[2], 10) > 29) { return false; } // manually check for feb 29 if (parseInt(dateStringParts[2], 10) === 29) { const year = parseInt(dateStringParts[0], 10); if ((year % 4 === 0 && year % 100 !== 0) || year % 400 === 0) { return true; } return false; } } // Check if the date is a valid date const isValid = !isNaN(date.getTime()); return isValid; }