UNPKG

business-time-calculator

Version:

Business Time Calculator is a simple tool to calculate the business time between two dates.

74 lines (73 loc) 2.81 kB
import { DateTime } from 'luxon'; export type DayOfWeek = 'monday' | 'tuesday' | 'wednesday' | 'thursday' | 'friday' | 'saturday' | 'sunday'; export type Holiday = `${3 | 2 | 1 | 0}${number}/${1 | 0}${number}`; export declare class BusinessTime { private businessTimezone; private businessDays; private holidays; private startOfDayTime; private endOfDayTime; static computeWorkingHours: (startHour: number, endHour: number) => number; constructor({ businessTimezone, businessDays, businessHours, holidays, }: { businessTimezone: string; businessDays: DayOfWeek[]; businessHours: number[]; holidays: Holiday[]; }); computeWorkingHours: () => number; isBusinessDay(datetime: DateTime): boolean; computeBusinessDaysInInterval({ start, end, }: { start: DateTime; end: DateTime; }): number; computeBusinessHoursInInterval({ start, end, }: { start: DateTime; end: DateTime; }): number; computeBusinessMinutesInInterval({ start, end, }: { start: DateTime; end: DateTime; }): number; computeBusinessSecondsInInterval({ start, end, }: { start: DateTime; end: DateTime; }): number; computeBusinessTimeInInterval({ start, end, unit, }: { start: DateTime; end: DateTime; unit: 'hours' | 'minutes' | 'seconds'; }): number; /** * Move the date in a business time (moveBehind = false) * e.g. 06:00 => 10:00 of the current day * e.g. 22:00 => 10:00 of the next day * * Move the date in a business time (moveBehind = true) * e.g. 06:00 => 19:00 of the previous day * e.g. 22:00 => 19:00 of the current day * * Warning ⚠️ _moveDateInBusinessTime doesn't retain the original timezone of the datetime in input, but it returns a datetime with the same timezone used to compute business times. * It follows that behaviour because this method should be private and used only as helper. It is public only for testing purpose. */ _moveDateInBusinessTime({ datetime, moveBehind, }: { datetime: DateTime; moveBehind?: boolean; }): DateTime<true> | DateTime<false>; addBusinessHoursToDate({ datetime, hours, }: { datetime: DateTime; hours: number; }): DateTime<boolean>; addBusinessSecondsToDate({ datetime, seconds, }: { datetime: DateTime; seconds: number; }): DateTime<boolean>; removeBusinessHoursFromDate({ datetime, hours, }: { datetime: DateTime; hours: number; }): DateTime<boolean>; removeBusinessSecondsFromDate({ datetime, seconds, }: { datetime: DateTime; seconds: number; }): DateTime<boolean>; hoursToDays(hours: number): number; }