"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.isEqualDate = exports.getValidValue = exports.getValueByDate = exports.getDateByValue = exports.getRangeData = void 0; var tslib_1 = require("tslib"); var dayjs_1 = tslib_1.__importDefault(require("dayjs")); function getArray(start, end, suffix) { var res = []; for (var i = 0; i < end - start + 1; i++) { res.push({ label: start + i + suffix, value: start + i }); } return res; } var precisionLengthRecord = { year: 1, month: 2, day: 3, hour: 4, minute: 5, second: 6, }; function getYears(min, max) { return getArray(min.year(), max.year(), '年'); } function getMonths(min, max, currentPicker) { 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, '月'); } function getDates(min, max, currentPicker) { 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, '日'); } function getHours(min, max, currentPicker) { 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, '时'); } function getMinutes(min, max, currentPicker) { 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, '分'); } function getSeconds(min, max, currentPicker) { 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, '秒'); } function getRangeData(precision, min, max, currentPickerDay) { 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)); break; case 1: data.push(getMonths(min, max, currentPickerDay)); break; case 2: data.push(getDates(min, max, currentPickerDay)); break; case 3: data.push(getHours(min, max, currentPickerDay)); break; case 4: data.push(getMinutes(min, max, currentPickerDay)); break; case 5: data.push(getSeconds(min, max, currentPickerDay)); break; } } return data; } exports.getRangeData = getRangeData; /** * 选中的值转换为时间类型,主要处理month从0开始的情况 * @param value * @returns */ function getDateByValue(value) { //@ts-ignore return new (Date.bind.apply(Date, tslib_1.__spreadArray([void 0], value.map(function (v, i) { return String(i === 1 ? v - 1 : v); }), false)))(); } exports.getDateByValue = getDateByValue; /** * date转换为value数组 * @param value * @returns */ function getValueByDate(date, precision) { var fields = [ 'getFullYear', 'getMonth', 'getDate', 'getHours', 'getMinutes', 'getSeconds', ]; var value = []; for (var i = 0; i < precisionLengthRecord[precision]; i++) { value.push(date[fields[i]]()); if (i === 1) { value[1] = value[1] + 1; } } return value; } exports.getValueByDate = getValueByDate; /** * 是否有效日期,主要处理月份对应可选日期,避免当前时间日期超出当月最后一天 * @param value */ 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; } exports.getValidValue = getValidValue; /** * 比较两个date是否是同一时间 * @param date1 * @param date2 */ function isEqualDate(date1, date2) { if (date1 instanceof Date && date2 instanceof Date) { return (0, dayjs_1.default)(date1).isSame(date2); } return date1 === date2; } exports.isEqualDate = isEqualDate;