previousDate.js
2.21 KB
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
export function parseDateString(dateStr) {
const [year, month, day] = dateStr.split('-').map(Number);
return new Date(year, month - 1, day); // 月份从0开始
}
export function formatDate(date) {
const year = date.getFullYear();
const month = String(date.getMonth() + 1).padStart(2, '0');
const day = String(date.getDate()).padStart(2, '0');
return `${year}-${month}-${day}`;
}
export function getPreviousYearMonth(startDateStr) {
const currentDate = parseDateString(startDateStr);
const year = currentDate.getFullYear();
const month = currentDate.getMonth();
let prevYear = year;
let prevMonth = month - 1;
if (prevMonth < 0) {
prevYear--;
prevMonth = 11;
}
const prevStartDate = new Date(prevYear, prevMonth, 1);
const prevEndDate = new Date(prevYear, prevMonth + 1, 0); // 下个月的第0天
return {
startDate: formatDate(prevStartDate),
endDate: formatDate(prevEndDate)
};
}
export function getPreviousYear(startDateStr) {
const currentYear = parseDateString(startDateStr).getFullYear();
const prevYear = currentYear - 1;
const prevStartDate = new Date(prevYear, 0, 1);
const prevEndDate = new Date(prevYear, 11, 31);
return {
startDate: formatDate(prevStartDate),
endDate: formatDate(prevEndDate)
};
}
export function getPreviousWeek(startDateStr, endDateStr) {
const prevStartDate = parseDateString(startDateStr);
prevStartDate.setDate(prevStartDate.getDate() - 7);
const prevEndDate = parseDateString(endDateStr);
prevEndDate.setDate(prevEndDate.getDate() - 7);
return {
startDate: formatDate(prevStartDate),
endDate: formatDate(prevEndDate)
};
}
export function getPreviousDate(startDateStr,endDateStr) {
const prevDate = parseDateString(startDateStr);
prevDate.setDate(prevDate.getDate() - 1);
return {
startDate: formatDate(prevDate),
endDate: formatDate(prevDate)
};
}
export function calculatePreviousPeriod(params) {
const {
type,
startDate,
endDate
} = params;
switch (type) {
case 'yearMonth':
return getPreviousYearMonth(startDate);
case 'year':
return getPreviousYear(startDate);
case 'week':
return getPreviousWeek(startDate, endDate);
case 'date':
return getPreviousDate(startDate,endDate);
default:
throw new Error('Invalid type');
}
}