mirror of
https://github.com/YouHaveTrouble/DiscipleOfLand.git
synced 2026-05-12 06:26:56 +00:00
46 lines
1.4 KiB
TypeScript
46 lines
1.4 KiB
TypeScript
import EorzeaTime from "../util/EorzeaTime";
|
|
|
|
export default class TimeRange {
|
|
|
|
private readonly from: [number, number];
|
|
private readonly to: [number, number];
|
|
|
|
constructor(fromHour: number, fromMinute: number, toHour: number, toMinute: number) {
|
|
this.from = [fromHour, fromMinute];
|
|
this.to = [toHour, toMinute];
|
|
}
|
|
|
|
public isWithinTimeFrame(hour: number, minute: number): boolean {
|
|
return (
|
|
this.from[0] < hour || this.from[0] == hour && this.from[1] <= minute)
|
|
&& (hour < this.to[0] || hour == this.to[0] && minute <= this.to[1]
|
|
);
|
|
}
|
|
|
|
/**
|
|
* Returns a timestamp when the time range will be active again
|
|
*/
|
|
public getNextTimeFrame(eorzeaTimeFrom: EorzeaTime): number {
|
|
const targetDate = new Date(eorzeaTimeFrom.eorzeaDate.getTime());
|
|
targetDate.setUTCHours(this.from[0], 0, 0, 0);
|
|
if (eorzeaTimeFrom.getHours() >= this.to[0]) {
|
|
targetDate.setUTCHours(this.from[0] + 24);
|
|
}
|
|
return targetDate.getTime();
|
|
}
|
|
|
|
/**
|
|
* Returns the timestamp when the current time range will end
|
|
* @param eorzeaTimeFrom
|
|
*/
|
|
public getEndTimeFrame(eorzeaTimeFrom: EorzeaTime): number {
|
|
const targetDate = new Date(eorzeaTimeFrom.eorzeaDate.getTime());
|
|
targetDate.setUTCHours(this.to[0], 0, 0, 0);
|
|
if (eorzeaTimeFrom.getHours() >= this.to[0]) {
|
|
targetDate.setUTCHours(this.to[0] + 24);
|
|
}
|
|
return targetDate.getTime();
|
|
}
|
|
|
|
}
|