Skip to content

Commit 5e4a7e3

Browse files
committed
Unrolled duration application steps.
1 parent d37caed commit 5e4a7e3

File tree

1 file changed

+10
-22
lines changed

1 file changed

+10
-22
lines changed

src/duration.ts

Lines changed: 10 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -84,34 +84,22 @@ export class Duration {
8484
}
8585
}
8686

87-
const durationApplicationActionsForward = [
88-
(r: Date, duration: Duration) => {
87+
export function applyDuration(date: Date | number, duration: Duration): Date {
88+
const r = new Date(date)
89+
if (duration.sign < 0) {
90+
r.setUTCSeconds(r.getUTCSeconds() + duration.seconds)
91+
r.setUTCMinutes(r.getUTCMinutes() + duration.minutes)
92+
r.setUTCHours(r.getUTCHours() + duration.hours)
93+
r.setUTCDate(r.getUTCDate() + duration.weeks * 7 + duration.days)
94+
r.setUTCMonth(r.getUTCMonth() + duration.months)
95+
r.setUTCFullYear(r.getUTCFullYear() + duration.years)
96+
} else {
8997
r.setUTCFullYear(r.getUTCFullYear() + duration.years)
90-
},
91-
(r: Date, duration: Duration) => {
9298
r.setUTCMonth(r.getUTCMonth() + duration.months)
93-
},
94-
(r: Date, duration: Duration) => {
9599
r.setUTCDate(r.getUTCDate() + duration.weeks * 7 + duration.days)
96-
},
97-
(r: Date, duration: Duration) => {
98100
r.setUTCHours(r.getUTCHours() + duration.hours)
99-
},
100-
(r: Date, duration: Duration) => {
101101
r.setUTCMinutes(r.getUTCMinutes() + duration.minutes)
102-
},
103-
(r: Date, duration: Duration) => {
104102
r.setUTCSeconds(r.getUTCSeconds() + duration.seconds)
105-
},
106-
]
107-
const durationApplicationActionsBackward = [...durationApplicationActionsForward].reverse()
108-
109-
export function applyDuration(date: Date | number, duration: Duration): Date {
110-
const r = new Date(date)
111-
if (duration.sign < 0) {
112-
for (const action of durationApplicationActionsBackward) action(r, duration)
113-
} else {
114-
for (const action of durationApplicationActionsForward) action(r, duration)
115103
}
116104
return r
117105
}

0 commit comments

Comments
 (0)