I’ll provide a clean, reusable version in TypeScript/JavaScript. Goal Return true if today (or a specified date) matches a predefined list of book-related days. Implementation // book-days.ts type BookDayRule = month: number; // 1-12 day: number; // 1-31 name: string; ;
// Extend this list as needed const BOOK_DAYS: BookDayRule[] = [ month: 4, day: 23, name: "World Book Day" , // UNESCO month: 4, day: 2, name: "International Children's Book Day" , month: 3, day: 3, name: "World Book Day (UK/Ireland)" , // first Thursday in March often, but simplified month: 9, day: 8, name: "International Literacy Day" , month: 10, day: 16, name: "Dictionary Day" , month: 11, day: 1, name: "National Author's Day" , // US ];
import isBookToday, getBookDayName from './book-days'; // Check today if (isBookToday()) console.log( Yes! Today is $getBookDayName(). ); else console.log("Not a recognized book day.");
type BookDayRule = | type: "fixed"; month: number; day: number; name: string | type: "floating"; month: number; weekday: number; occurrence: number; name: string ; // Example: first Thursday in March // occurrence: 1 = first, 2 = second, etc.
// Optional: get the name of the book day if true export function getBookDayName(date: Date = new Date()): string | null const month = date.getMonth() + 1; const day = date.getDate();
// Check a specific date const testDate = new Date(2026, 3, 23); // April 23, 2026 console.log(isBookToday(testDate)); // true console.log(getBookDayName(testDate)); // "World Book Day" If you need to handle dynamic book days (e.g., first Thursday of March), modify the rule structure:
I’ll provide a clean, reusable version in TypeScript/JavaScript. Goal Return true if today (or a specified date) matches a predefined list of book-related days. Implementation // book-days.ts type BookDayRule = month: number; // 1-12 day: number; // 1-31 name: string; ;
// Extend this list as needed const BOOK_DAYS: BookDayRule[] = [ month: 4, day: 23, name: "World Book Day" , // UNESCO month: 4, day: 2, name: "International Children's Book Day" , month: 3, day: 3, name: "World Book Day (UK/Ireland)" , // first Thursday in March often, but simplified month: 9, day: 8, name: "International Literacy Day" , month: 10, day: 16, name: "Dictionary Day" , month: 11, day: 1, name: "National Author's Day" , // US ]; isbooktoday
import isBookToday, getBookDayName from './book-days'; // Check today if (isBookToday()) console.log( Yes! Today is $getBookDayName(). ); else console.log("Not a recognized book day."); Today is $getBookDayName()
type BookDayRule = | type: "fixed"; month: number; day: number; name: string | type: "floating"; month: number; weekday: number; occurrence: number; name: string ; // Example: first Thursday in March // occurrence: 1 = first, 2 = second, etc. Today is $getBookDayName(). )
// Optional: get the name of the book day if true export function getBookDayName(date: Date = new Date()): string | null const month = date.getMonth() + 1; const day = date.getDate();
// Check a specific date const testDate = new Date(2026, 3, 23); // April 23, 2026 console.log(isBookToday(testDate)); // true console.log(getBookDayName(testDate)); // "World Book Day" If you need to handle dynamic book days (e.g., first Thursday of March), modify the rule structure: