Skip to content

Commit 9d96ce4

Browse files
authored
This reverts commit 9a8c8ce.
1 parent 185e257 commit 9d96ce4

File tree

3 files changed

+35
-46
lines changed

3 files changed

+35
-46
lines changed

src/generate/moment.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import { GenerateConfig } from '.';
55
const generateConfig: GenerateConfig<Moment> = {
66
// get
77
getNow: () => moment(),
8-
getWeekDay: date => date.weekday(),
8+
getWeekDay: date => date.clone().locale('en_US').weekday(),
99
getYear: date => date.year(),
1010
getMonth: date => date.month(),
1111
getDate: date => date.date(),

src/utils/dateUtil.ts

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import { noteOnce } from 'rc-util/lib/warning';
12
import { GenerateConfig } from '../generate';
23
import { NullableDateType, PickerMode } from '../interface';
34

@@ -160,10 +161,25 @@ export function getWeekStartDate<DateType>(
160161
generateConfig: GenerateConfig<DateType>,
161162
value: DateType,
162163
) {
164+
const weekFirstDay = generateConfig.locale.getWeekFirstDay(locale);
163165
const monthStartDate = generateConfig.setDate(value, 1);
164-
const wd = generateConfig.getWeekDay(monthStartDate);
165166

166-
return generateConfig.addDate(monthStartDate, -wd);
167+
for (let i = 0; i < 7; i += 1) {
168+
const current = generateConfig.addDate(monthStartDate, -i);
169+
if (generateConfig.getWeekDay(current) === weekFirstDay) {
170+
return current;
171+
}
172+
}
173+
174+
/* istanbul ignore next */
175+
/* eslint-disable no-lone-blocks */
176+
{
177+
noteOnce(
178+
false,
179+
'Not find week start date. Please check your `generateConfig`. If using default `generateConfig`, please help to fire a issue.',
180+
);
181+
return value;
182+
}
167183
}
168184

169185
export function getClosingViewDate<DateType>(

tests/util.spec.tsx

Lines changed: 16 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
1-
import moment from 'moment';
21
import momentGenerateConfig from '../src/generate/moment';
32
import { toArray } from '../src/utils/miscUtil';
4-
import { isSameTime, isSameDecade, getWeekStartDate } from '../src/utils/dateUtil';
3+
import { isSameTime, isSameDecade } from '../src/utils/dateUtil';
54
import { getMoment } from './util/commonUtil';
65

76
describe('Picker.Util', () => {
@@ -15,57 +14,31 @@ describe('Picker.Util', () => {
1514
// Time is only for time
1615
it('isSameTime', () => {
1716
expect(
18-
isSameTime(momentGenerateConfig, getMoment('2000-01-01'), getMoment('1989-11-28')),
17+
isSameTime(
18+
momentGenerateConfig,
19+
getMoment('2000-01-01'),
20+
getMoment('1989-11-28'),
21+
),
1922
).toBeTruthy();
2023

21-
expect(isSameTime(momentGenerateConfig, null, getMoment('1989-11-28'))).toBeFalsy();
24+
expect(
25+
isSameTime(momentGenerateConfig, null, getMoment('1989-11-28')),
26+
).toBeFalsy();
2227

2328
expect(isSameTime(momentGenerateConfig, null, null)).toBeTruthy();
2429
});
2530

2631
it('isSameDecade', () => {
2732
expect(isSameDecade(momentGenerateConfig, null, null)).toBeTruthy();
28-
expect(isSameDecade(momentGenerateConfig, getMoment('2000-01-02'), null)).toBeFalsy();
29-
expect(
30-
isSameDecade(momentGenerateConfig, getMoment('1995-01-01'), getMoment('1999-01-01')),
31-
).toBeTruthy();
32-
});
33-
34-
it('getWeekStartDate: en', () => {
3533
expect(
36-
getWeekStartDate('en', momentGenerateConfig, getMoment('2020-03-17').locale('en')).format(
37-
'YYYY-MM-DD',
38-
),
39-
).toBe('2020-03-01');
40-
});
41-
42-
it('getWeekStartDate: zh-cn', () => {
34+
isSameDecade(momentGenerateConfig, getMoment('2000-01-02'), null),
35+
).toBeFalsy();
4336
expect(
44-
getWeekStartDate(
45-
'zh-cn',
37+
isSameDecade(
4638
momentGenerateConfig,
47-
getMoment('2020-03-17').locale('zh-cn'),
48-
).format('YYYY-MM-DD'),
49-
).toBe('2020-02-24');
50-
});
51-
52-
describe('week starts from monday', () => {
53-
const defaultWeekStartDate = moment.localeData().firstDayOfWeek();
54-
const locale = moment.locale();
55-
56-
beforeAll(() => {
57-
moment.updateLocale(locale, { week: { dow: 1 } });
58-
});
59-
afterAll(() => {
60-
moment.updateLocale(locale, { week: { dow: defaultWeekStartDate } });
61-
});
62-
63-
it('getWeekStartDate', () => {
64-
expect(
65-
getWeekStartDate(locale, momentGenerateConfig, getMoment('2020-03-17')).format(
66-
'YYYY-MM-DD',
67-
),
68-
).toBe('2020-02-24');
69-
});
39+
getMoment('1995-01-01'),
40+
getMoment('1999-01-01'),
41+
),
42+
).toBeTruthy();
7043
});
7144
});

0 commit comments

Comments
 (0)