its-thursday
Version:
A simple utility to check if a given date is Thursday
43 lines (36 loc) • 1.39 kB
JavaScript
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;