@@ -84,34 +84,22 @@ export class Duration {
84
84
}
85
85
}
86
86
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 {
89
97
r . setUTCFullYear ( r . getUTCFullYear ( ) + duration . years )
90
- } ,
91
- ( r : Date , duration : Duration ) => {
92
98
r . setUTCMonth ( r . getUTCMonth ( ) + duration . months )
93
- } ,
94
- ( r : Date , duration : Duration ) => {
95
99
r . setUTCDate ( r . getUTCDate ( ) + duration . weeks * 7 + duration . days )
96
- } ,
97
- ( r : Date , duration : Duration ) => {
98
100
r . setUTCHours ( r . getUTCHours ( ) + duration . hours )
99
- } ,
100
- ( r : Date , duration : Duration ) => {
101
101
r . setUTCMinutes ( r . getUTCMinutes ( ) + duration . minutes )
102
- } ,
103
- ( r : Date , duration : Duration ) => {
104
102
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 )
115
103
}
116
104
return r
117
105
}
0 commit comments