All files / libs/dates/src add.ts

100% Statements 39/39
100% Branches 8/8
100% Functions 1/1
100% Lines 39/39

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 401x 1x 1x 1x 1x 1x 1x 1x 1x 1x 16x 16x 16x 16x 15x 4x 4x 15x 4x 4x 15x 4x 4x 15x 4x 4x 15x 15x 15x 15x 4x 4x 15x 4x 4x 15x 16x 16x 16x  
export interface IDateAddOptions {
    years?: number;
    months?: number;
    days?: number;
    hours?: number;
    minutes?: number;
    seconds?: number;
}
 
export const add = (date: Date, options?: IDateAddOptions): Date => {
    let newDate = new Date(date);
    let nbOfSecondsToAdd = 0;
 
    if (options != null) {
        if (options.days != null) {
            nbOfSecondsToAdd += options.days * 60 * 60 * 24;
        }
        if (options.hours != null) {
            nbOfSecondsToAdd += options.hours * 60 * 60;
        }
        if (options.minutes != null) {
            nbOfSecondsToAdd += options.minutes * 60;
        }
        if (options.seconds != null) {
            nbOfSecondsToAdd += options.seconds;
        }
 
        newDate = new Date(date.getTime() + nbOfSecondsToAdd * 1000);
 
        if (options.months != null) {
            newDate = new Date(newDate.setMonth(newDate.getMonth() + options.months));
        }
        if (options.years != null) {
            newDate = new Date(newDate.setFullYear(newDate.getFullYear() + options.years));
        }
    }
 
    return newDate;
};