diff --git a/src/timespan.ts b/src/timespan.ts new file mode 100644 index 0000000..be4515e --- /dev/null +++ b/src/timespan.ts @@ -0,0 +1,32 @@ +export class TimeSpan { + private start: { hours: number; minutes: number }; + private end: { hours: number; minutes: number }; + + constructor(timeSpanStr: string) { + const [startStr, endStr] = timeSpanStr.split("-"); + this.start = this.parseTime(startStr); + this.end = this.parseTime(endStr); + } + + private parseTime(timeStr: string) { + const [hours, minutes] = timeStr.split(":").map(Number); + return { hours, minutes }; + } + + contains(timestamp: number = Date.now()): boolean { + const date = new Date(timestamp); + + const hours = date.getHours(); + const minutes = date.getMinutes(); + const currentMinutes = hours * 60 + minutes; + + const startMinutes = this.start.hours * 60 + this.start.minutes; + const endMinutes = this.end.hours * 60 + this.end.minutes; + + if (startMinutes > endMinutes) { + return currentMinutes >= startMinutes || currentMinutes < endMinutes; + } else { + return currentMinutes >= startMinutes && currentMinutes < endMinutes; + } + } +}