dateFns.js
3.91 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
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
import { getDay, getYear as _getYear, getMonth as _getMonth, getDate as _getDate, endOfMonth, getHours, getMinutes, getSeconds, addYears, addMonths, addDays, setYear as _setYear, setMonth as _setMonth, setDate as _setDate, setHours, setMinutes, setSeconds, isAfter as _isAfter, isValid, getWeek as _getWeek, startOfWeek, format as formatDate, parse as parseDate } from 'date-fns';
import * as Locale from 'date-fns/locale';
var dealLocal = function dealLocal(str) {
return str.replace(/_/g, '');
};
var localeParse = function localeParse(format) {
return format.replace(/Y/g, 'y').replace(/D/g, 'd').replace(/gggg/, 'yyyy').replace(/g/g, 'G').replace(/([Ww])o/g, 'wo');
};
var generateConfig = {
// get
getNow: function getNow() {
return new Date();
},
getFixedDate: function getFixedDate(string) {
return new Date(string);
},
getEndDate: function getEndDate(date) {
return endOfMonth(date);
},
getWeekDay: function getWeekDay(date) {
return getDay(date);
},
getYear: function getYear(date) {
return _getYear(date);
},
getMonth: function getMonth(date) {
return _getMonth(date);
},
getDate: function getDate(date) {
return _getDate(date);
},
getHour: function getHour(date) {
return getHours(date);
},
getMinute: function getMinute(date) {
return getMinutes(date);
},
getSecond: function getSecond(date) {
return getSeconds(date);
},
// set
addYear: function addYear(date, diff) {
return addYears(date, diff);
},
addMonth: function addMonth(date, diff) {
return addMonths(date, diff);
},
addDate: function addDate(date, diff) {
return addDays(date, diff);
},
setYear: function setYear(date, year) {
return _setYear(date, year);
},
setMonth: function setMonth(date, month) {
return _setMonth(date, month);
},
setDate: function setDate(date, num) {
return _setDate(date, num);
},
setHour: function setHour(date, hour) {
return setHours(date, hour);
},
setMinute: function setMinute(date, minute) {
return setMinutes(date, minute);
},
setSecond: function setSecond(date, second) {
return setSeconds(date, second);
},
// Compare
isAfter: function isAfter(date1, date2) {
return _isAfter(date1, date2);
},
isValidate: function isValidate(date) {
return isValid(date);
},
locale: {
getWeekFirstDay: function getWeekFirstDay(locale) {
var clone = Locale[dealLocal(locale)];
return clone.options.weekStartsOn;
},
getWeekFirstDate: function getWeekFirstDate(locale, date) {
return startOfWeek(date, {
locale: Locale[dealLocal(locale)]
});
},
getWeek: function getWeek(locale, date) {
return _getWeek(date, {
locale: Locale[dealLocal(locale)]
});
},
getShortWeekDays: function getShortWeekDays(locale) {
var clone = Locale[dealLocal(locale)];
return Array.from({
length: 7
}).map(function (_, i) {
return clone.localize.day(i, {
width: 'short'
});
});
},
getShortMonths: function getShortMonths(locale) {
var clone = Locale[dealLocal(locale)];
return Array.from({
length: 12
}).map(function (_, i) {
return clone.localize.month(i, {
width: 'abbreviated'
});
});
},
format: function format(locale, date, _format) {
if (!isValid(date)) {
return null;
}
return formatDate(date, localeParse(_format), {
locale: Locale[dealLocal(locale)]
});
},
parse: function parse(locale, text, formats) {
for (var i = 0; i < formats.length; i += 1) {
var format = localeParse(formats[i]);
var formatText = text;
var date = parseDate(formatText, format, new Date(), {
locale: Locale[dealLocal(locale)]
});
if (isValid(date)) {
return date;
}
}
return null;
}
}
};
export default generateConfig;