Skip to content

Commit 8deea4a

Browse files
feat: new methods setDate / getDate (#625)
1 parent b39210e commit 8deea4a

File tree

15 files changed

+191
-5
lines changed

15 files changed

+191
-5
lines changed

README.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -197,6 +197,9 @@ export interface IUtils<TDate> {
197197
getSeconds(value: TDate): number;
198198
setSeconds(value: TDate, count: number): TDate;
199199

200+
getDate(value: TDate): number;
201+
setDate(value: TDate, count: number): TDate;
202+
200203
getMonth(value: TDate): number;
201204
getDaysInMonth(value: TDate): number;
202205
setMonth(value: TDate, count: number): TDate;

__tests__/calculations.test.ts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -165,6 +165,10 @@ describe("DateTime calculations", () => {
165165
expect(utils.getSeconds(date)).toBe(0);
166166
});
167167

168+
utilsTest("getDate", (date, utils) => {
169+
expect(utils.getDate(date)).toBe(30);
170+
});
171+
168172
utilsTest("getYear", (date, utils) => {
169173
expect(utils.getYear(date)).toBe(2018);
170174
});
@@ -217,6 +221,14 @@ describe("DateTime calculations", () => {
217221
expect(updatedTime).toBe("2011-10-30 11:44");
218222
});
219223

224+
utilsTest("setDate", (date, utils, lib) => {
225+
const updatedTime = utils.formatByString(
226+
utils.setDate(date, 15),
227+
formats.dateTime[lib]
228+
);
229+
expect(updatedTime).toBe("2018-10-15 11:44");
230+
});
231+
220232
utilsTest("setSeconds", (date, utils) => {
221233
expect(utils.setSeconds(date, 11)).toBeTruthy();
222234
});

__tests__/date-fns-jalali.test.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -164,6 +164,10 @@ describe("DateFnsJalali", () => {
164164
expect(utils.getYear(date)).toBe(1397);
165165
});
166166

167+
it("DateFnsJalali -- getDate", () => {
168+
expect(utils.getDate(date)).toBe(8);
169+
});
170+
167171
it("DateFnsJalali -- getMonth", () => {
168172
expect(utils.getMonth(date)).toBe(7);
169173
});
@@ -203,6 +207,11 @@ describe("DateFnsJalali", () => {
203207
expect(updatedTime).toBe("1399/08/08 11:44");
204208
});
205209

210+
it("DateFnsJalali -- setDate", () => {
211+
const updatedTime = utils.formatByString(utils.setDate(date, 12), dateTimeFormat);
212+
expect(updatedTime).toBe("1397/08/12 11:44");
213+
});
214+
206215
it("DateFnsJalali -- setSeconds", () => {
207216
expect(utils.setSeconds(date, 11)).toBeTruthy();
208217
});

__tests__/hijri.test.ts

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,38 @@ describe("Hijri", () => {
4646
expect(hijriiUtils.getWeekdays()).toEqual(["ح", "ن", "ث", "ر", "خ", "ج", "س"]);
4747
});
4848

49+
it("Hijri -- getYear", () => {
50+
const date = hijriiUtils.date(TEST_TIMESTAMP);
51+
52+
expect(hijriiUtils.getYear(date)).toEqual(
53+
1440
54+
);
55+
});
56+
57+
it("Hijri -- setYear", () => {
58+
const date = hijriiUtils.date(TEST_TIMESTAMP);
59+
60+
expect(hijriiUtils.setYear(date, 1441).toISOString()).toEqual(
61+
"2019-10-20T11:44:00.000Z"
62+
);
63+
});
64+
65+
it("Hijri -- getDate", () => {
66+
const date = hijriiUtils.date(TEST_TIMESTAMP);
67+
68+
expect(hijriiUtils.getDate(date)).toEqual(
69+
21
70+
);
71+
});
72+
73+
it("Hijri -- setDate", () => {
74+
const date = hijriiUtils.date(TEST_TIMESTAMP);
75+
76+
expect(hijriiUtils.setDate(date, 22).toISOString()).toEqual(
77+
"2018-10-31T11:44:00.000Z"
78+
);
79+
});
80+
4981
it("Hijri -- endOfYear", () => {
5082
const date = hijriiUtils.date(TEST_TIMESTAMP);
5183

__tests__/jalaali.test.ts

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,12 @@ describe("Jalaali", () => {
2828
expect(jalaaliUtils.getYear(date)).toBe(1397);
2929
});
3030

31+
it("Should proper work with jalaali day in month", () => {
32+
const date = jalaaliUtils.date(TEST_TIMESTAMP);
33+
34+
expect(jalaaliUtils.getDate(date)).toBe(8);
35+
});
36+
3137
it("Should proper work with jalaali month", () => {
3238
const date = jalaaliUtils.date(TEST_TIMESTAMP);
3339

@@ -49,6 +55,46 @@ describe("Jalaali", () => {
4955
expect(jalaaliUtils.getWeekdays()).toEqual(["ش", "ی", "د", "س", "چ", "پ", "ج"]);
5056
});
5157

58+
it("Jalaali -- getYear", () => {
59+
const date = jalaaliUtils.date(TEST_TIMESTAMP);
60+
61+
expect(jalaaliUtils.getYear(date)).toEqual(
62+
1397
63+
);
64+
});
65+
66+
it("Jalaali -- setYear", () => {
67+
const date = jalaaliUtils.date(TEST_TIMESTAMP);
68+
69+
expect(jalaaliUtils.setYear(date, 1398).toISOString()).toEqual(
70+
"2019-10-30T11:44:00.000Z"
71+
);
72+
});
73+
74+
it("Jalaali -- getDate", () => {
75+
const date = jalaaliUtils.date(TEST_TIMESTAMP);
76+
77+
expect(jalaaliUtils.getDate(date)).toEqual(
78+
8
79+
);
80+
});
81+
82+
it("Jalaali -- setDate", () => {
83+
const date = jalaaliUtils.date(TEST_TIMESTAMP);
84+
85+
expect(jalaaliUtils.setDate(date, 9).toISOString()).toEqual(
86+
"2018-10-31T11:44:00.000Z"
87+
);
88+
});
89+
90+
it("Jalaali -- getYear", () => {
91+
const date = jalaaliUtils.date(TEST_TIMESTAMP);
92+
93+
expect(jalaaliUtils.getYear(date)).toEqual(
94+
1397
95+
);
96+
});
97+
5298
it("Jalaali -- endOfYear", () => {
5399
const date = jalaaliUtils.date(TEST_TIMESTAMP);
54100

__tests__/local-date-calculations.test.ts

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -123,11 +123,14 @@ describe("DateTime calculations", () => {
123123
);
124124
});
125125

126-
127126
localDateutilsTest("getYear", (date, utils) => {
128127
expect(utils.getYear(date)).toBe(2018);
129128
});
130129

130+
localDateutilsTest("getDate", (date, utils) => {
131+
expect(utils.getDate(date)).toBe(30);
132+
});
133+
131134
localDateutilsTest("getMonth", (date, utils) => {
132135
expect(utils.getMonth(date)).toBe(9);
133136
});
@@ -152,6 +155,14 @@ describe("DateTime calculations", () => {
152155
expect(updatedTime).toBe("2011-10-30");
153156
});
154157

158+
localDateutilsTest("setYear", (date, utils, lib) => {
159+
const updatedTime = utils.formatByString(
160+
utils.setDate(date, 15),
161+
formats.date[lib]
162+
);
163+
expect(updatedTime).toBe("2018-10-15");
164+
});
165+
155166
localDateutilsTest("isAfter", (date, utils, lib) => {
156167
expect(utils.isAfter(utils.date("2021-01-01"), utils.date(LOCALDATE_TEST_TIMESTAMP))).toBeTruthy();
157168
expect(utils.isAfter(utils.date(LOCALDATE_TEST_TIMESTAMP), utils.date("2021-01-01"))).toBeFalsy();

packages/core/IUtils.d.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -140,6 +140,9 @@ export interface IUtils<TDate extends ExtendableDateType> {
140140
getSeconds(value: TDate): number;
141141
setSeconds(value: TDate, count: number): TDate;
142142

143+
getDate(value: TDate): number;
144+
setDate(value: TDate, count: number): TDate;
145+
143146
getMonth(value: TDate): number;
144147
getDaysInMonth(value: TDate): number;
145148
setMonth(value: TDate, count: number): TDate;

packages/date-fns-jalali/src/date-fns-jalali-utils.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ import getHours from "date-fns-jalali/getHours";
2424
import getSeconds from "date-fns-jalali/getSeconds";
2525
import getYear from "date-fns-jalali/getYear";
2626
import getMonth from "date-fns-jalali/getMonth";
27+
import getDate from "date-fns-jalali/getDate";
2728
import getDay from "date-fns-jalali/getDay";
2829
import getDaysInMonth from "date-fns-jalali/getDaysInMonth";
2930
import getMinutes from "date-fns-jalali/getMinutes";
@@ -37,6 +38,7 @@ import isSameHour from "date-fns-jalali/isSameHour";
3738
import isValid from "date-fns-jalali/isValid";
3839
import dateFnsParse from "date-fns-jalali/parse";
3940
import parseISO from "date-fns-jalali/parseISO";
41+
import setDate from "date-fns-jalali/setDate";
4042
import setHours from "date-fns-jalali/setHours";
4143
import setMinutes from "date-fns-jalali/setMinutes";
4244
import setMonth from "date-fns-jalali/setMonth";
@@ -284,6 +286,14 @@ export default class DateFnsJalaliUtils implements IUtils<Date> {
284286
return setYear(value, count);
285287
};
286288

289+
public getDate = (value: Date) => {
290+
return getDate(value);
291+
};
292+
293+
public setDate = (value: Date, count: number) => {
294+
return setDate(value, count);
295+
};
296+
287297
public date = (value?: string | number | Date) => {
288298
if (typeof value === "undefined") {
289299
return new Date();

packages/date-fns/src/date-fns-utils.ts

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,12 @@ import endOfDay from "date-fns/endOfDay";
1919
import endOfWeek from "date-fns/endOfWeek";
2020
import endOfYear from "date-fns/endOfYear";
2121
import format from "date-fns/format";
22+
import getDate from "date-fns/getDate";
23+
import getDay from "date-fns/getDay";
24+
import getDaysInMonth from "date-fns/getDaysInMonth";
2225
import getHours from "date-fns/getHours";
26+
import getMinutes from "date-fns/getMinutes";
27+
import getMonth from "date-fns/getMonth";
2328
import getSeconds from "date-fns/getSeconds";
2429
import getYear from "date-fns/getYear";
2530
import isAfter from "date-fns/isAfter";
@@ -31,11 +36,10 @@ import isSameMonth from "date-fns/isSameMonth";
3136
import isSameHour from "date-fns/isSameHour";
3237
import isValid from "date-fns/isValid";
3338
import dateFnsParse from "date-fns/parse";
39+
import setDate from "date-fns/setDate";
3440
import setHours from "date-fns/setHours";
3541
import setMinutes from "date-fns/setMinutes";
3642
import setMonth from "date-fns/setMonth";
37-
import getDay from "date-fns/getDay";
38-
import getDaysInMonth from "date-fns/getDaysInMonth";
3943
import setSeconds from "date-fns/setSeconds";
4044
import setYear from "date-fns/setYear";
4145
import startOfDay from "date-fns/startOfDay";
@@ -346,11 +350,19 @@ export default class DateFnsUtils implements IUtils<Date> {
346350
};
347351

348352
public getMinutes = (date: Date) => {
349-
return date.getMinutes();
353+
return getMinutes(date);
354+
};
355+
356+
public getDate = (date: Date) => {
357+
return getDate(date);
358+
};
359+
360+
public setDate = (date: Date, count: number) => {
361+
return setDate(date, count);
350362
};
351363

352364
public getMonth = (date: Date) => {
353-
return date.getMonth();
365+
return getMonth(date);
354366
};
355367

356368
public getDaysInMonth = (date: Date) => {

packages/dayjs/src/dayjs-utils.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -255,6 +255,14 @@ export default class DayjsUtils<TDate extends Dayjs = Dayjs> implements IUtils<T
255255
return date.month();
256256
};
257257

258+
public getDate = (date: Dayjs) => {
259+
return date.date();
260+
};
261+
262+
public setDate = (date: Dayjs, count: number) => {
263+
return date.set("date", count) as TDate;
264+
};
265+
258266
public getDaysInMonth = (date: Dayjs) => {
259267
return date.daysInMonth();
260268
};

0 commit comments

Comments
 (0)