You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
InternshipProject/node_modules/rc-picker/es/generate/dayjs.js

169 lines
4.6 KiB

import dayjs from 'dayjs';
import { noteOnce } from "rc-util/es/warning";
import weekday from 'dayjs/plugin/weekday';
import localeData from 'dayjs/plugin/localeData';
import weekOfYear from 'dayjs/plugin/weekOfYear';
import weekYear from 'dayjs/plugin/weekYear';
import advancedFormat from 'dayjs/plugin/advancedFormat';
import customParseFormat from 'dayjs/plugin/customParseFormat';
dayjs.extend(customParseFormat);
dayjs.extend(advancedFormat);
dayjs.extend(weekday);
dayjs.extend(localeData);
dayjs.extend(weekOfYear);
dayjs.extend(weekYear);
dayjs.extend(function (o, c) {
// todo support Wo (ISO week)
var proto = c.prototype;
var oldFormat = proto.format;
proto.format = function f(formatStr) {
var str = (formatStr || '').replace('Wo', 'wo');
return oldFormat.bind(this)(str);
};
});
var localeMap = {
en_GB: 'en-gb',
en_US: 'en',
zh_CN: 'zh-cn',
zh_TW: 'zh-tw'
};
var parseLocale = function parseLocale(locale) {
var mapLocale = localeMap[locale];
return mapLocale || locale.split('_')[0];
};
var parseNoMatchNotice = function parseNoMatchNotice() {
/* istanbul ignore next */
noteOnce(false, 'Not match any format. Please help to fire a issue about this.');
};
var generateConfig = {
// get
getNow: function getNow() {
return dayjs();
},
getFixedDate: function getFixedDate(string) {
return dayjs(string, 'YYYY-MM-DD');
},
getEndDate: function getEndDate(date) {
return date.endOf('month');
},
getWeekDay: function getWeekDay(date) {
var clone = date.locale('en');
return clone.weekday() + clone.localeData().firstDayOfWeek();
},
getYear: function getYear(date) {
return date.year();
},
getMonth: function getMonth(date) {
return date.month();
},
getDate: function getDate(date) {
return date.date();
},
getHour: function getHour(date) {
return date.hour();
},
getMinute: function getMinute(date) {
return date.minute();
},
getSecond: function getSecond(date) {
return date.second();
},
// set
addYear: function addYear(date, diff) {
return date.add(diff, 'year');
},
addMonth: function addMonth(date, diff) {
return date.add(diff, 'month');
},
addDate: function addDate(date, diff) {
return date.add(diff, 'day');
},
setYear: function setYear(date, year) {
return date.year(year);
},
setMonth: function setMonth(date, month) {
return date.month(month);
},
setDate: function setDate(date, num) {
return date.date(num);
},
setHour: function setHour(date, hour) {
return date.hour(hour);
},
setMinute: function setMinute(date, minute) {
return date.minute(minute);
},
setSecond: function setSecond(date, second) {
return date.second(second);
},
// Compare
isAfter: function isAfter(date1, date2) {
return date1.isAfter(date2);
},
isValidate: function isValidate(date) {
return date.isValid();
},
locale: {
getWeekFirstDay: function getWeekFirstDay(locale) {
return dayjs().locale(parseLocale(locale)).localeData().firstDayOfWeek();
},
getWeekFirstDate: function getWeekFirstDate(locale, date) {
return date.locale(parseLocale(locale)).weekday(0);
},
getWeek: function getWeek(locale, date) {
return date.locale(parseLocale(locale)).week();
},
getShortWeekDays: function getShortWeekDays(locale) {
return dayjs().locale(parseLocale(locale)).localeData().weekdaysMin();
},
getShortMonths: function getShortMonths(locale) {
return dayjs().locale(parseLocale(locale)).localeData().monthsShort();
},
format: function format(locale, date, _format) {
return date.locale(parseLocale(locale)).format(_format);
},
parse: function parse(locale, text, formats) {
var localeStr = parseLocale(locale);
for (var i = 0; i < formats.length; i += 1) {
var format = formats[i];
var formatText = text;
if (format.includes('wo') || format.includes('Wo')) {
// parse Wo
var year = formatText.split('-')[0];
var weekStr = formatText.split('-')[1];
var firstWeek = dayjs(year, 'YYYY').startOf('year').locale(localeStr);
for (var j = 0; j <= 52; j += 1) {
var nextWeek = firstWeek.add(j, 'week');
if (nextWeek.format('Wo') === weekStr) {
return nextWeek;
}
}
parseNoMatchNotice();
return null;
}
var date = dayjs(formatText, format).locale(localeStr);
if (date.isValid()) {
return date;
}
}
if (text) {
parseNoMatchNotice();
}
return null;
}
}
};
export default generateConfig;