@@ -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