datetime-fcs
Version:
A library to format dates, track countdowns, and calculate durations.
52 lines (43 loc) • 1.77 kB
JavaScript
// 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`;
};