Skip to content

Commit

Permalink
feat: New methods (#623)
Browse files Browse the repository at this point in the history
  • Loading branch information
flaviendelangle committed Aug 10, 2022
1 parent 77f89b4 commit bdb5a2f
Show file tree
Hide file tree
Showing 11 changed files with 45 additions and 0 deletions.
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -179,6 +179,7 @@ export interface IUtils<TDate> {
addDays(value: TDate, count: number): TDate;
addWeeks(value: TDate, count: number): TDate;
addMonths(value: TDate, count: number): TDate;
addYears(value: TDate, count: number): TDate;

startOfDay(value: TDate): TDate;
endOfDay(value: TDate): TDate;
Expand Down
5 changes: 5 additions & 0 deletions __tests__/calculations.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,11 @@ describe("DateTime calculations", () => {
expect(utils.format(utils.addMonths(date, -2), "monthAndYear")).toBe("August 2018");
});

utilsTest("addYears", (date, utils, lib) => {
expect(utils.format(utils.addYears(date, 2), "year")).toBe("2020");
expect(utils.format(utils.addYears(date, -2), "year")).toBe("2016");
});

utilsTest("startOfDay", (date, utils, lib) => {
expect(utils.formatByString(utils.startOfDay(date), formats.dateTime[lib])).toBe(
"2018-10-30 00:00"
Expand Down
5 changes: 5 additions & 0 deletions __tests__/date-fns-jalali.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,11 @@ describe("DateFnsJalali", () => {
expect(utils.format(utils.addMonths(date, -2), "monthAndYear")).toBe("شهریور 1397");
});

it("DateFnsJalali -- addYears", () => {
expect(utils.format(utils.addYears(date, 2), "year")).toBe("1399");
expect(utils.format(utils.addYears(date, -2), "year")).toBe("1395");
});

it("DateFnsJalali -- startOfDay", () => {
expect(utils.formatByString(utils.startOfDay(date), dateTimeFormat)).toBe(
"1397/08/08 00:00"
Expand Down
5 changes: 5 additions & 0 deletions __tests__/local-date-calculations.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,11 @@ describe("DateTime calculations", () => {
expect(utils.format(utils.addMonths(date, -2), "monthAndYear")).toBe("August 2018");
});

localDateutilsTest("addYears", (date, utils, lib) => {
expect(utils.format(utils.addYears(date, 2), "year")).toBe("2020");
expect(utils.format(utils.addYears(date, -2), "year")).toBe("2016");
});

localDateutilsTest("startOfDay", (date, utils, lib) => {
expect(utils.formatByString(utils.startOfDay(date), formats.dateTime[lib])).toBe(
"2018-10-30 00:00"
Expand Down
1 change: 1 addition & 0 deletions packages/core/IUtils.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -122,6 +122,7 @@ export interface IUtils<TDate extends ExtendableDateType> {
addDays(value: TDate, count: number): TDate;
addWeeks(value: TDate, count: number): TDate;
addMonths(value: TDate, count: number): TDate;
addYears(value: TDate, count: number): TDate;

startOfDay(value: TDate): TDate;
endOfDay(value: TDate): TDate;
Expand Down
4 changes: 4 additions & 0 deletions packages/date-fns-jalali/src/date-fns-jalali-utils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -168,6 +168,10 @@ export default class DateFnsJalaliUtils implements IUtils<Date> {
return addMonths(value, count);
};

public addYears = (value: Date, count: number) => {
return addYears(value, count);
};

public isValid = (value: any) => {
return isValid(this.date(value));
};
Expand Down
4 changes: 4 additions & 0 deletions packages/date-fns/src/date-fns-utils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -161,6 +161,10 @@ export default class DateFnsUtils implements IUtils<Date> {
return addMonths(value, count);
};

public addYears = (value: Date, count: number) => {
return addYears(value, count);
};

public isValid = (value: any) => {
return isValid(this.date(value));
};
Expand Down
6 changes: 6 additions & 0 deletions packages/dayjs/src/dayjs-utils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -221,6 +221,12 @@ export default class DayjsUtils<TDate extends Dayjs = Dayjs> implements IUtils<T
: (date.add(count, "month") as TDate);
};

public addYears = (date: Dayjs, count: number) => {
return count < 0
? (date.subtract(Math.abs(count), "year") as TDate)
: (date.add(count, "year") as TDate);
};

public setMonth = (date: Dayjs, count: number) => {
return date.set("month", count) as TDate;
};
Expand Down
4 changes: 4 additions & 0 deletions packages/js-joda/src/js-joda-utils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -509,6 +509,10 @@ export default class JsJodaUtils implements IUtils<Temporal> {
return value.plus(count, ChronoUnit.MONTHS);
}

addYears(value: Temporal, count: number): Temporal {
return value.plus(count, ChronoUnit.YEARS);
}

addSeconds(value: Temporal, count: number): Temporal {
return value.plus(count, ChronoUnit.SECONDS);
}
Expand Down
4 changes: 4 additions & 0 deletions packages/luxon/src/luxon-utils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -129,6 +129,10 @@ export default class LuxonUtils implements IUtils<DateTime> {
return date.plus({ months: count });
};

public addYears = (date: DateTime, count: number) => {
return date.plus({ years: count });
};

public isValid = (value: any) => {
if (value instanceof DateTime) {
return value.isValid;
Expand Down
6 changes: 6 additions & 0 deletions packages/moment/src/moment-utils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -210,6 +210,12 @@ export default class MomentUtils implements IUtils<defaultMoment.Moment> {
: date.clone().add(count, "months");
};

public addYears = (date: Moment, count: number) => {
return count < 0
? date.clone().subtract(Math.abs(count), "years")
: date.clone().add(count, "years");
};

public setHours = (date: Moment, count: number) => {
return date.clone().hours(count);
};
Expand Down

0 comments on commit bdb5a2f

Please sign in to comment.