feat: add TimeOnly class
Some checks failed
Build and Deploy Angular App / build (push) Failing after 38s
Some checks failed
Build and Deploy Angular App / build (push) Failing after 38s
This commit is contained in:
parent
748421580a
commit
dedc8b258a
44
src/shared/structs/TimeOnly.ts
Normal file
44
src/shared/structs/TimeOnly.ts
Normal file
@ -0,0 +1,44 @@
|
||||
export class TimeOnly {
|
||||
|
||||
private readonly _ticks: number;
|
||||
|
||||
constructor(hour: number, minute: number, second: number);
|
||||
constructor(time: Date);
|
||||
constructor(time: string);
|
||||
constructor(hourOrTime: number | Date | string, minute?: number, second?: number) {
|
||||
if (hourOrTime instanceof Date) {
|
||||
this._ticks = hourOrTime.getTime();
|
||||
} else if (typeof hourOrTime === 'number' && minute !== undefined && second !== undefined) {
|
||||
this._ticks = new Date(2000, 0, 1, hourOrTime, minute, second, 0).getTime()
|
||||
} else if (typeof hourOrTime === 'string') {
|
||||
const [h, m, s] = hourOrTime.split(':').map(Number);
|
||||
this._ticks = new Date(2000, 0, 1, h, m, s, 0).getTime()
|
||||
} else {
|
||||
throw new Error('Invalid constructor arguments');
|
||||
}
|
||||
}
|
||||
|
||||
get minute(): number {
|
||||
return new Date(this._ticks).getMinutes();
|
||||
}
|
||||
|
||||
get hour(): number {
|
||||
return new Date(this._ticks).getHours();
|
||||
}
|
||||
|
||||
get second(): number {
|
||||
return new Date(this._ticks).getSeconds();
|
||||
}
|
||||
|
||||
get localTime(): string {
|
||||
return new Date(this._ticks).toLocaleDateString();
|
||||
}
|
||||
|
||||
toTimeWithoutSeconds(): string {
|
||||
return `${String(this.hour).padStart(2, '0')}:${String(this.minute).padStart(2, '0')}`
|
||||
}
|
||||
|
||||
toString(): string {
|
||||
return `${String(this.hour).padStart(2, '0')}:${String(this.minute).padStart(2, '0')}-${String(this.second).padStart(2, '0')}`;
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user