jiaqingjiayi-xiaochengxu/甲情_甲意/miniprogram/node_modules/antd-mini/es/DatePicker/util.js
2024-11-10 15:01:22 +08:00

175 lines
4.8 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

"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;