datetimebuddy
Version:
A lightweight, chainable DateTime utility for JavaScript and TypeScript with UTC support, formatting, and date math.
87 lines (70 loc) • 4.14 kB
JavaScript
const { DateTimeBuddy } = require('datetimebuddy');
const dt = new DateTimeBuddy("2025-07-26T15:04:05Z");
console.log("=== Basic Access & Formatting ===");
console.log("Format (UTC):", dt.format("YYYY-MM-DD HH:mm:ss")); // 2025-07-26 15:04:05
console.log("Year:", dt.year());
console.log("Month:", dt.month());
console.log("Day:", dt.day());
console.log("Hour:", dt.hour());
console.log("Minute:", dt.minute());
console.log("Second:", dt.second());
console.log("\n=== Date Details ===");
console.log("Weekday:", dt.getWeekday());
console.log("ISO Weekday:", dt.getISOWeekday());
console.log("Week Number:", dt.getWeekNumber());
console.log("Is Leap Year:", dt.isLeapYear());
console.log("Days in Month:", dt.daysInMonth());
console.log("Is Weekend:", dt.isWeekend());
console.log("\n=== Date Manipulation ===");
console.log("Add 1 day:", dt.clone().addDays(1).format("YYYY-MM-DD"));
console.log("Subtract 1 hour:", dt.clone().subtractHours(1).format("HH:mm"));
console.log("Start of Day:", dt.clone().startOfDay().format("YYYY-MM-DD HH:mm:ss"));
console.log("End of Month:", dt.clone().endOfMonth().format("YYYY-MM-DD HH:mm:ss"));
console.log("\n=== Comparison & Difference ===");
const other = new DateTimeBuddy("2025-07-30T00:00:00Z");
console.log("Days between:", dt.daysBetween(other));
console.log("Equals date only:", dt.equalsDateOnly(other)); // false
console.log("Compare (should be -1):", dt.compare(other));
console.log("Compare (should be 1):", other.compare(dt));
console.log("Compare (same):", dt.compare(dt.clone()));
console.log("diffIn days:", dt.diffIn(other, "days"));
console.log("diffIn hours:", dt.diffIn(other, "hours"));
console.log("\n=== Conversion ===");
const unix = dt.toUnixTimestamp();
console.log("To Unix timestamp:", unix);
console.log("From Unix timestamp:", DateTimeBuddy.fromUnixTimestamp(unix).toISOString());
console.log("Clone equals original:", dt.clone().isSame(dt));
console.log("\n=== Relative Time ===");
console.log("From now (future):", dt.clone().addMinutes(5).fromNow());
console.log("Time ago (past):", dt.clone().subtractMinutes(5).timeAgo());
console.log("\n=== Timezone Handling ===");
const dtNY = new DateTimeBuddy("2025-07-26T15:04:05Z", "America/New_York");
console.log("Format (America/New_York):", dtNY.format("YYYY-MM-DD HH:mm:ss"));
console.log("Timezone:", dtNY.getTimeZone());
dtNY.setTimeZone("Asia/Tokyo");
console.log("Format after timezone change (Asia/Tokyo):", dtNY.format("YYYY-MM-DD HH:mm:ss"));
console.log("Timezone now:", dtNY.getTimeZone());
console.log("Start of Day (Asia/Tokyo):", dtNY.clone().startOfDay().format("YYYY-MM-DD HH:mm:ss"));
console.log("End of Day (Asia/Tokyo):", dtNY.clone().endOfDay().format("YYYY-MM-DD HH:mm:ss"));
const dtLA = new DateTimeBuddy("2025-07-30T00:00:00Z", "America/Los_Angeles");
console.log("Days between NY and LA instances:", dtNY.daysBetween(dtLA));
console.log("\n=== Output Variants ===");
console.log("toUTCString():", dt.toUTCString());
console.log("toJSON():", dt.toJSON());
console.log("toLocaleString():", dt.toLocaleString());
console.log("toLocaleDateString():", dt.toLocaleDateString());
console.log("\n=== Friendly Formats ===");
console.log("Friendly Format (default):", dt.formatFriendly());
console.log("Friendly Format (ja-JP):", dt.formatFriendly("ja-JP"));
console.log("Friendly Format (fr-FR):", dt.formatFriendly("fr-FR"));
const weekTest = dt.currentWeek();
console.log("Current Week Start:", weekTest.start.format("YYYY-MM-DD HH:mm:ss"));
console.log("Current Week End:", weekTest.end.format("YYYY-MM-DD HH:mm:ss"));
const next = dt.nextWeek();
console.log("Next Week Start:", next.start.format("YYYY-MM-DD"));
console.log("Next Week End:", next.end.format("YYYY-MM-DD"));
const prev = dt.previousWeek();
console.log("Previous Week Start:", prev.start.format("YYYY-MM-DD"));
console.log("Previous Week End:", prev.end.format("YYYY-MM-DD"));
console.log("Add 2 Weeks:", dt.clone().addWeeks(2).format("YYYY-MM-DD"));
console.log("Subtract 1 Week:", dt.clone().subtractWeeks(1).format("YYYY-MM-DD"));