horas
Version:
A simple CLI app to manage local daily tasks notation files.
41 lines (40 loc) • 1.25 kB
JavaScript
export default class Time {
#minutes = 0;
#occultMinutesWhenZero = false;
#sign = '';
constructor(initialMinutes = 0, occultMinutesWhenZero = false, sign = ' ') {
this.#minutes = initialMinutes;
this.#occultMinutesWhenZero = occultMinutesWhenZero;
this.#sign = sign;
}
isEmpty() {
return this.#minutes === 0;
}
equals(time) {
return this.#minutes === time.#minutes;
}
subtract(time, occultMinutesWhenZero = false) {
return new Time(Math.abs(this.#minutes - time.#minutes), occultMinutesWhenZero, this.#minutes <= time.#minutes ? '+' : '-');
}
addHours(hours) {
this.#minutes += hours * 60;
}
addMinutes(minutes) {
this.#minutes += minutes;
}
addTime(time) {
this.#minutes += time.#minutes;
}
get minutes() {
return this.#minutes % 60;
}
get hours() {
return Math.floor(this.#minutes / 60);
}
toString(sign) {
sign = sign || this.#sign;
const hourText = sign + String(this.hours);
const minuteText = String(this.minutes).padStart(2, '0');
return hourText + 'h' + (this.#occultMinutesWhenZero && this.minutes === 0 ? '' : minuteText);
}
}