All files / projects-dev/libs/dates/src add.ts

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

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 351x 1x 1x 1x 1x 1x 1x 1x 1x 16x 16x 16x 15x 4x 4x 15x 4x 4x 15x 4x 4x 15x 4x 4x 15x 15x 4x 4x 15x 4x 4x 15x 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 != undefined) {
        if (options.days != undefined) {
            nbOfSecondsToAdd += options.days * 60 * 60 * 24;
        }
        if (options.hours != undefined) {
            nbOfSecondsToAdd += options.hours * 60 * 60;
        }
        if (options.minutes != undefined) {
            nbOfSecondsToAdd += options.minutes * 60;
        }
        if (options.seconds != undefined) {
            nbOfSecondsToAdd += options.seconds;
        }
        newDate = new Date(date.getTime() + nbOfSecondsToAdd * 1000);
        if (options.months != undefined) {
            newDate = new Date(newDate.setMonth(newDate.getMonth() + options.months));
        }
        if (options.years != undefined) {
            newDate = new Date(newDate.setFullYear(newDate.getFullYear() + options.years));
        }
    }
    return newDate;
};