Skip to content

Commit c787fb0

Browse files
SevereCloudmendrew
andauthored
refactor(isDateToday): use isSameDate (#517)
--------- Co-authored-by: Andrey Medvedev <andr.medv.spb@gmail.com>
1 parent 2fa4ad8 commit c787fb0

File tree

6 files changed

+63
-44
lines changed

6 files changed

+63
-44
lines changed

src/datetime/date.ts

Lines changed: 1 addition & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,9 @@
11
import { leadingZero } from '../other/numbers';
2+
import { isDateToday } from './isDateToday';
23

34
export const SECONDS_IN_THE_DAY = 86400;
45
const MILLISECONDS_IN_THE_DAY = SECONDS_IN_THE_DAY * 1000;
56

6-
/**
7-
* Проверяет, что переданная дата является сегодняшним днём
8-
*
9-
* @example
10-
* ```ts
11-
* import assert from 'node:assert';
12-
* import { isDateToday } from '@vkontakte/vkjs';
13-
*
14-
* assert.ok(isDateToday(new Date());
15-
* ```
16-
*/
17-
export function isDateToday(date: Date): boolean {
18-
// TODO: переиспользовать isSameDate
19-
const now = new Date();
20-
const d = now.getDate();
21-
const m = now.getMonth();
22-
const y = now.getFullYear();
23-
24-
return date.getFullYear() === y && date.getMonth() === m && date.getDate() === d;
25-
}
26-
277
/**
288
* Проверяет, что переданная дата - вчерашний день
299
*
@@ -56,27 +36,6 @@ export function isDateTomorrow(date: Date): boolean {
5636
return isDateToday(tomorrowDate);
5737
}
5838

59-
/**
60-
* Проверяет что переданные даты находятся в одном дне
61-
*
62-
* @example
63-
* ```ts
64-
* import assert from 'node:assert';
65-
* import { isSameDate } from '@vkontakte/vkjs';
66-
*
67-
* const d1 = new Date();
68-
* const d2 = new Date();
69-
* assert.ok(isSameDate(d1, d2));
70-
* ```
71-
*/
72-
export function isSameDate(d1: Date, d2: Date): boolean {
73-
return (
74-
d1.getDate() === d2.getDate() &&
75-
d1.getMonth() === d2.getMonth() &&
76-
d1.getFullYear() === d2.getFullYear()
77-
);
78-
}
79-
8039
/**
8140
* Возвращает новую дату — начало переданного дня
8241
*

src/datetime/index.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,7 @@
11
export {
22
SECONDS_IN_THE_DAY,
3-
isDateToday,
43
isDateYesterday,
54
isDateTomorrow,
6-
isSameDate,
75
getBeginningOfDay,
86
isLeapYear,
97
getLastDayOfMonth,
@@ -14,4 +12,7 @@ export {
1412
convertDateToInputFormat,
1513
} from '../datetime/date';
1614

15+
export { isDateToday } from './isDateToday';
16+
export { isSameDate } from './isSameDate';
17+
1718
export { formatDuration } from './duration';

src/datetime/isDateToday.test.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
import { expect, test } from '@jest/globals';
2+
import { isDateToday } from './isDateToday';
3+
4+
test('isDateToday to be truthy', () => {
5+
expect(isDateToday(new Date())).toBeTruthy();
6+
});
7+
8+
test('isDateToday to be falsy', () => {
9+
expect(isDateToday(new Date(2024, 0, 1))).toBeFalsy();
10+
});

src/datetime/isDateToday.ts

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
import { isSameDate } from './isSameDate';
2+
3+
/**
4+
* Проверяет, что переданная дата является сегодняшним днём
5+
*
6+
* @example
7+
* ```ts
8+
* import assert from 'node:assert';
9+
* import { isDateToday } from '@vkontakte/vkjs';
10+
*
11+
* assert.ok(isDateToday(new Date());
12+
* ```
13+
*/
14+
export function isDateToday(date: Date): boolean {
15+
return isSameDate(date, new Date());
16+
}

src/datetime/isSameDate.test.ts

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
import { expect, test } from '@jest/globals';
2+
import { isSameDate } from './isSameDate';
3+
4+
test('isSameDate to be truthy', () => {
5+
expect(isSameDate(new Date(2024, 0, 1), new Date(2024, 0, 1))).toBeTruthy();
6+
expect(
7+
isSameDate(new Date(2024, 0, 1, 12, 34, 56, 789), new Date(2024, 0, 1, 21, 43, 56, 987)),
8+
).toBeTruthy();
9+
});
10+
11+
test('isSameDate to be falsy', () => {
12+
expect(isSameDate(new Date(2024, 0, 1), new Date(2024, 0, 2))).toBeFalsy();
13+
});

src/datetime/isSameDate.ts

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
/**
2+
* Проверяет, что переданные даты относятся к одному и тому же дню
3+
*
4+
* @example
5+
* ```ts
6+
* import assert from 'node:assert';
7+
* import { isSameDate } from '@vkontakte/vkjs';
8+
*
9+
* const d1 = new Date();
10+
* const d2 = new Date();
11+
* assert.ok(isSameDate(d1, d2));
12+
* ```
13+
*/
14+
export function isSameDate(d1: Date, d2: Date): boolean {
15+
return (
16+
d1.getDate() === d2.getDate() &&
17+
d1.getMonth() === d2.getMonth() &&
18+
d1.getFullYear() === d2.getFullYear()
19+
);
20+
}

0 commit comments

Comments
 (0)