A modern JavaScript date manipulation library that extends the native Date class with powerful utility methods for date calculations, timezone conversions, and difference calculations.
- Extends native Date class with additional functionality
- Comprehensive date difference calculations
- Timezone conversion utilities
- Leap year handling
- Week and day calculations
- Date arithmetic operations
- Full TypeScript support
npm install eoniximport Eonix from "eonix";
// Create a new Eonix instance
const date = new Eonix("2023-01-01");
// Add time to a date
date.add({ years: 1, months: 2, days: 3 });
console.log(date); // 2024-03-04
// Calculate difference between dates
const diff = Eonix.diff("2023-01-01", "2023-06-30");
console.log(diff.inMonths()); // 5
console.log(diff.inDays()); // 180
// Sort dates
const [earlier, later] = Eonix.sort("2023-06-30", "2023-01-01");Creates a sorted array of Eonix instances based on the given dates.
const [date1, date2] = Eonix.sort("2023-01-01", "2023-06-30");Calculates the difference between two dates.
const diff = Eonix.diff("2023-01-01", "2023-06-30");add({ years, months, weeks, days, hours, minutes, seconds, milliseconds })addDate({ years, months, weeks, days })addTime({ hours, minutes, seconds, milliseconds })addYears(years)addMonths(months)addWeeks(weeks)addDays(days)addHours(hours)addMinutes(minutes)addSeconds(seconds)addMilliseconds(milliseconds)
getWeekday()- Returns day of week (1-7)getDayOfYear()- Returns day of yeargetWeekNumber()- Returns week numberisLeapYear()- Checks if date is in a leap yearisUTC()- Checks if date is in UTCinRange()- Checks if date is in date range
convertToUTC()- Converts date to UTCconvertToTimeZone(offset)- Converts to specified timezone offsettoDate()- Converts to native Date object
inUnits(units)- Calculates the difference between two dates in specified unitsAvailable units: "years", "months", "weeks", "days", "hours", "minutes", "seconds", "milliseconds" If no units are specified, all units will be calculated.const diff = Eonix.diff("2023-01-01", "2023-06-30"); const result = diff.inUnits(["years", "months", "days"]); // Result: { years: 0, months: 5, days: 29 }
inYears({ absolute = false })inMonths({ absolute = false })inWeeks({ absolute = false })inDays({ absolute = false })inHours({ absolute = false })inMinutes({ absolute = false })inSeconds({ absolute = false })inMilliseconds({ absolute = false })
const date = new Eonix("2023-01-01");
date.add({ years: 1, months: 2, days: 3 });
// Result: 2024-03-04const diff = Eonix.diff("2023-01-01", "2023-06-30");
console.log(diff.inMonths()); // 5
console.log(diff.inDays()); // 180const date = new Eonix("2023-01-01");
date.convertToTimeZone(2); // Convert to UTC+2const date = new Eonix("2020-02-29");
console.log(date.isLeapYear()); // trueconst date = new Eonix('2023-06-15');
const start = new Eonix('2023-06-01');
const end = new Eonix('2023-06-30');
console.log(date.inRange(start, end)); // trueMIT
- Roman Nebel
- Email: r@nebel.im
- Website: https://nebel.im