UNPKG

@daiso-tech/core

Version:

The library offers flexible, framework-agnostic solutions for modern web applications, built on adaptable components that integrate seamlessly with popular frameworks like Next Js.

128 lines 3.98 kB
/** * @module Utilities */ /** * The `TimeSpan` class is used for representing time interval. * `TimeSpan` cannot be negative. * * IMPORT_PATH: `"@daiso-tech/core/utilities"` * @group TimeSpan */ export class TimeSpan { milliseconds; static secondInMilliseconds = 1000; static minuteInMilliseconds = 60 * TimeSpan.secondInMilliseconds; static hourInMilliseconds = 60 * TimeSpan.minuteInMilliseconds; static dayInMilliseconds = 24 * TimeSpan.hourInMilliseconds; static deserialize(timeInMs) { return new TimeSpan(timeInMs); } constructor(milliseconds = 0) { this.milliseconds = milliseconds; this.milliseconds = Math.max(0, this.milliseconds); } serialize() { return this.toMilliseconds(); } static fromMilliseconds(milliseconds) { return new TimeSpan().addMilliseconds(milliseconds); } static fromSeconds(seconds) { return new TimeSpan().addSeconds(seconds); } static fromMinutes(minutes) { return new TimeSpan().addMinutes(minutes); } static fromHours(hours) { return new TimeSpan().addHours(hours); } static fromDays(days) { return new TimeSpan().addDays(days); } static fromTimeSpan(timeSpan) { return new TimeSpan().addTimeSpan(timeSpan); } static fromDateRange(from, to) { return new TimeSpan().addMilliseconds(to.getTime() - from.getTime()); } addMilliseconds(milliseconds) { return new TimeSpan(this.toMilliseconds() + milliseconds); } addSeconds(seconds) { return this.addMilliseconds(TimeSpan.secondInMilliseconds * seconds); } addMinutes(minutes) { return this.addMilliseconds(TimeSpan.minuteInMilliseconds * minutes); } addHours(hours) { return this.addMilliseconds(TimeSpan.hourInMilliseconds * hours); } addDays(days) { return this.addMilliseconds(TimeSpan.dayInMilliseconds * days); } addTimeSpan(timeSpan) { return this.addMilliseconds(timeSpan.toMilliseconds()); } subtractMilliseconds(milliseconds) { return new TimeSpan(this.toMilliseconds() - milliseconds); } subtractSeconds(seconds) { return this.subtractMilliseconds(TimeSpan.secondInMilliseconds * seconds); } subtractMinutes(minutes) { return this.subtractMilliseconds(TimeSpan.minuteInMilliseconds * minutes); } subtractHours(hours) { return this.subtractMilliseconds(TimeSpan.hourInMilliseconds * hours); } subtractDays(days) { return this.subtractMilliseconds(TimeSpan.dayInMilliseconds * days); } subtractTimeSpan(timeSpan) { return this.subtractMilliseconds(timeSpan.toMilliseconds()); } multiply(value) { return new TimeSpan(Math.round(value * this.toMilliseconds())); } divide(value) { return new TimeSpan(Math.round(this.toMilliseconds() / value)); } toMilliseconds() { return this.milliseconds; } toSeconds() { return Math.floor(this.milliseconds / TimeSpan.secondInMilliseconds); } toMinutes() { return Math.floor(this.milliseconds / TimeSpan.minuteInMilliseconds); } toHours() { return Math.floor(this.milliseconds / TimeSpan.hourInMilliseconds); } toDays() { return Math.floor(this.milliseconds / TimeSpan.dayInMilliseconds); } /** * Will return endDate relative to a given `startDate` argument. * * @default * ```ts * new Date() * ``` */ toEndDate(startDate = new Date()) { return new Date(startDate.getTime() + this.toMilliseconds()); } /** * Will return startDate relative to a given `endDate` argument. * * @default * ```ts * new Date() * ``` */ toStartDate(endDate = new Date()) { return new Date(endDate.getTime() - this.toMilliseconds()); } } //# sourceMappingURL=time-span.js.map