39 lines
897 B
TypeScript
39 lines
897 B
TypeScript
export class Clock {
|
|
private _hour = 0;
|
|
private _minute = 0;
|
|
|
|
private setTime(hour: number, minute: number = 0): void {
|
|
this._minute = minute % 60;
|
|
if (this._minute < 0) {
|
|
this._minute = 60 + this._minute;
|
|
}
|
|
|
|
this._hour = (hour + Math.floor(minute / 60)) % 24;
|
|
if (this._hour < 0) {
|
|
this._hour = (this._hour % 24) + 24;
|
|
}
|
|
}
|
|
|
|
constructor(hour: number, minute?: number) {
|
|
this.setTime(hour, minute);
|
|
}
|
|
|
|
public toString(): string {
|
|
return `${String(this._hour).padStart(2, "0")}:${String(
|
|
this._minute
|
|
).padStart(2, "0")}`;
|
|
}
|
|
|
|
public plus(minutes: number): Clock {
|
|
return new Clock(this._hour, this._minute + minutes);
|
|
}
|
|
|
|
public minus(minutes: number): Clock {
|
|
return new Clock(this._hour, this._minute - minutes);
|
|
}
|
|
|
|
public equals(other: Clock): boolean {
|
|
return this.toString() === other.toString();
|
|
}
|
|
}
|