UNPKG

datetime-fcs

Version:

A library to format dates, track countdowns, and calculate durations.

52 lines (43 loc) 1.77 kB
// src/index.js import { format, differenceInSeconds, parseISO } from "date-fns"; /** * Countdown function: Returns remaining time until a target date. * @param {string} endTime - Target end time in ISO format. * @returns {string} Countdown in the format 'X hours, Y minutes, Z seconds'. */ export const countdown = (endTime) => { const now = new Date(); const target = parseISO(endTime); const secondsRemaining = differenceInSeconds(target, now); if (secondsRemaining <= 0) { return "The countdown has ended!"; } const hours = Math.floor(secondsRemaining / 3600); const minutes = Math.floor((secondsRemaining % 3600) / 60); const seconds = secondsRemaining % 60; return `${hours} hours, ${minutes} minutes, ${seconds} seconds remaining`; }; /** * Format a given date to a specific format. * @param {string} date - The date string to format. * @param {string} formatString - The desired format (e.g., "yyyy-MM-dd HH:mm:ss"). * @returns {string} Formatted date. */ export const formatDate = (date, formatString) => { return format(new Date(date), formatString); }; /** * Calculate duration between two dates. * @param {string} startDate - The start date (ISO format). * @param {string} endDate - The end date (ISO format). * @returns {string} Duration in the format 'X hours, Y minutes, Z seconds'. */ export const durationBetweenDates = (startDate, endDate) => { const start = parseISO(startDate); const end = parseISO(endDate); const durationInSeconds = differenceInSeconds(end, start); const hours = Math.floor(durationInSeconds / 3600); const minutes = Math.floor((durationInSeconds % 3600) / 60); const seconds = durationInSeconds % 60; return `${hours} hours, ${minutes} minutes, ${seconds} seconds`; };