UNPKG

its-thursday

Version:

A simple utility to check if a given date is Thursday

43 lines (36 loc) 1.39 kB
const THURSDAY_DAY_INDEX = 4; const MONTH_INDEX_OFFSET = 1; const DATE_FORMAT_REGEX = /^\d{4}-\d{2}-\d{2}$/; const ISO_TIME_SUFFIX = 'T00:00:00'; /** * Validates and parses a date string in Y-m-d format * @param {string} dateString - Date string in Y-m-d format * @returns {Date} - Parsed and validated Date object * @throws {Error} - If date format is invalid or date is not valid */ function validateAndParseDate(dateString) { if (!DATE_FORMAT_REGEX.test(dateString)) { throw new Error('Date must be in Y-m-d format (e.g., 2023-12-07)'); } const [year, month, day] = dateString.split('-').map(Number); const parsedDate = new Date(dateString + ISO_TIME_SUFFIX); if (isNaN(parsedDate.getTime())) { throw new Error('Invalid date provided'); } if (parsedDate.getFullYear() !== year || parsedDate.getMonth() !== month - MONTH_INDEX_OFFSET || parsedDate.getDate() !== day) { throw new Error('Invalid date provided'); } return parsedDate; } /** * Check if a given date is Thursday * @param {string} [dateString] - Optional date string in Y-m-d format * @returns {boolean} - True if the date is Thursday, false otherwise */ function itsThursday(dateString) { const targetDate = dateString ? validateAndParseDate(dateString) : new Date(); return targetDate.getDay() === THURSDAY_DAY_INDEX; } module.exports = itsThursday;