123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169 |
- import { __spreadArray } from "tslib";
- import dayjs from 'dayjs';
- function getArray(start, end, format) {
- var res = [];
- for (var i = 0; i < end - start + 1; i++) {
- res.push({ label: format(start + i), value: start + i });
- }
- return res;
- }
- var precisionLengthRecord = {
- year: 1,
- month: 2,
- day: 3,
- hour: 4,
- minute: 5,
- second: 6,
- };
- function getYears(min, max, format) {
- return getArray(min.year(), max.year(), format.bind(this, 'year'));
- }
- function getMonths(min, max, currentPicker, format) {
- var start = 1;
- var end = 12;
- if (currentPicker
- .clone()
- .set('month', start - 1)
- .isBefore(min)) {
- start = min.month() + 1;
- }
- if (currentPicker
- .clone()
- .set('month', end - 1)
- .isAfter(max)) {
- end = max.month() + 1;
- }
- return getArray(start, end, format.bind(this, 'month'));
- }
- function getDates(min, max, currentPicker, format) {
- var start = 1;
- var end = currentPicker.daysInMonth();
- if (currentPicker.clone().set('date', start).isBefore(min)) {
- start = min.date();
- }
- if (currentPicker.clone().set('date', end).isAfter(max)) {
- end = max.date();
- }
- return getArray(start, end, format.bind(this, 'day'));
- }
- function getHours(min, max, currentPicker, format) {
- var start = 0;
- var end = 23;
- if (currentPicker.clone().set('hour', start).isBefore(min)) {
- start = min.hour();
- }
- if (currentPicker.clone().set('hour', end).isAfter(max)) {
- end = max.hour();
- }
- return getArray(start, end, format.bind(this, 'hour'));
- }
- function getMinutes(min, max, currentPicker, format) {
- var start = 0;
- var end = 59;
- if (currentPicker.clone().set('minute', start).isBefore(min)) {
- start = min.minute();
- }
- if (currentPicker.clone().set('minute', end).isAfter(max)) {
- end = max.minute();
- }
- return getArray(start, end, format.bind(this, 'minute'));
- }
- function getSeconds(min, max, currentPicker, format) {
- var start = 0;
- var end = 59;
- if (currentPicker.clone().set('second', start).isBefore(min)) {
- start = min.second();
- }
- if (currentPicker.clone().set('second', end).isAfter(max)) {
- end = max.second();
- }
- return getArray(start, end, format.bind(this, 'second'));
- }
- export function getRangeData(precision, min, max, currentPickerDay, format) {
- var data = [];
- var len = precisionLengthRecord[precision];
- if (!len)
- return [];
- for (var i = 0; i < len; i++) {
- switch (i) {
- case 0:
- data.push(getYears(min, max, format));
- break;
- case 1:
- data.push(getMonths(min, max, currentPickerDay, format));
- break;
- case 2:
- data.push(getDates(min, max, currentPickerDay, format));
- break;
- case 3:
- data.push(getHours(min, max, currentPickerDay, format));
- break;
- case 4:
- data.push(getMinutes(min, max, currentPickerDay, format));
- break;
- case 5:
- data.push(getSeconds(min, max, currentPickerDay, format));
- break;
- }
- }
- return data;
- }
- /**
- * 选中的值转换为时间类型,主要处理month从0开始的情况
- * @param value
- * @returns
- */
- export function getDateByValue(value) {
- //@ts-ignore
- return new (Date.bind.apply(Date, __spreadArray([void 0], value.map(function (v, i) { return String(i === 1 ? v - 1 : v); }), false)))();
- }
- /**
- * date转换为value数组
- * @param value
- * @returns
- */
- export function getValueByDate(date, precision) {
- var fields = [
- 'getFullYear',
- 'getMonth',
- 'getDate',
- 'getHours',
- 'getMinutes',
- 'getSeconds',
- ];
- var value = [];
- if (!date)
- return value;
- for (var i = 0; i < precisionLengthRecord[precision]; i++) {
- value.push(date[fields[i]]());
- if (i === 1) {
- value[1] = value[1] + 1;
- }
- }
- return value;
- }
- /**
- * 是否有效日期,主要处理月份对应可选日期,避免当前时间日期超出当月最后一天
- * @param value
- */
- export function getValidValue(value) {
- if (value.length > 2) {
- var maxDate = new Date(value[0], value[1], 0).getDate();
- if (value[2] > maxDate) {
- value = value.slice();
- value[2] = maxDate;
- }
- }
- return value;
- }
- /**
- * 比较两个date是否是同一时间
- * @param date1
- * @param date2
- */
- export function isEqualDate(date1, date2) {
- if (date1 instanceof Date && date2 instanceof Date) {
- return dayjs(date1).isSame(date2);
- }
- return date1 === date2;
- }
|