jiaqingjiayi-xiaochengxu/甲情_甲意/miniprogram/node_modules/antd-mini/es/DatePicker/util.js

170 lines
4.7 KiB
JavaScript
Raw Normal View History

2024-12-01 11:56:54 +00:00
import { __spreadArray } from "tslib";
import dayjs from 'dayjs';
function getArray(start, end, format) {
2024-11-10 07:01:22 +00:00
var res = [];
for (var i = 0; i < end - start + 1; i++) {
2024-12-01 11:56:54 +00:00
res.push({ label: format(start + i), value: start + i });
2024-11-10 07:01:22 +00:00
}
return res;
}
var precisionLengthRecord = {
year: 1,
month: 2,
day: 3,
hour: 4,
minute: 5,
second: 6,
};
2024-12-01 11:56:54 +00:00
function getYears(min, max, format) {
return getArray(min.year(), max.year(), format.bind(this, 'year'));
2024-11-10 07:01:22 +00:00
}
2024-12-01 11:56:54 +00:00
function getMonths(min, max, currentPicker, format) {
2024-11-10 07:01:22 +00:00
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;
}
2024-12-01 11:56:54 +00:00
return getArray(start, end, format.bind(this, 'month'));
2024-11-10 07:01:22 +00:00
}
2024-12-01 11:56:54 +00:00
function getDates(min, max, currentPicker, format) {
2024-11-10 07:01:22 +00:00
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();
}
2024-12-01 11:56:54 +00:00
return getArray(start, end, format.bind(this, 'day'));
2024-11-10 07:01:22 +00:00
}
2024-12-01 11:56:54 +00:00
function getHours(min, max, currentPicker, format) {
2024-11-10 07:01:22 +00:00
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();
}
2024-12-01 11:56:54 +00:00
return getArray(start, end, format.bind(this, 'hour'));
2024-11-10 07:01:22 +00:00
}
2024-12-01 11:56:54 +00:00
function getMinutes(min, max, currentPicker, format) {
2024-11-10 07:01:22 +00:00
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();
}
2024-12-01 11:56:54 +00:00
return getArray(start, end, format.bind(this, 'minute'));
2024-11-10 07:01:22 +00:00
}
2024-12-01 11:56:54 +00:00
function getSeconds(min, max, currentPicker, format) {
2024-11-10 07:01:22 +00:00
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();
}
2024-12-01 11:56:54 +00:00
return getArray(start, end, format.bind(this, 'second'));
2024-11-10 07:01:22 +00:00
}
2024-12-01 11:56:54 +00:00
export function getRangeData(precision, min, max, currentPickerDay, format) {
2024-11-10 07:01:22 +00:00
var data = [];
var len = precisionLengthRecord[precision];
if (!len)
return [];
for (var i = 0; i < len; i++) {
switch (i) {
case 0:
2024-12-01 11:56:54 +00:00
data.push(getYears(min, max, format));
2024-11-10 07:01:22 +00:00
break;
case 1:
2024-12-01 11:56:54 +00:00
data.push(getMonths(min, max, currentPickerDay, format));
2024-11-10 07:01:22 +00:00
break;
case 2:
2024-12-01 11:56:54 +00:00
data.push(getDates(min, max, currentPickerDay, format));
2024-11-10 07:01:22 +00:00
break;
case 3:
2024-12-01 11:56:54 +00:00
data.push(getHours(min, max, currentPickerDay, format));
2024-11-10 07:01:22 +00:00
break;
case 4:
2024-12-01 11:56:54 +00:00
data.push(getMinutes(min, max, currentPickerDay, format));
2024-11-10 07:01:22 +00:00
break;
case 5:
2024-12-01 11:56:54 +00:00
data.push(getSeconds(min, max, currentPickerDay, format));
2024-11-10 07:01:22 +00:00
break;
}
}
return data;
}
/**
* 选中的值转换为时间类型主要处理month从0开始的情况
* @param value
* @returns
*/
2024-12-01 11:56:54 +00:00
export function getDateByValue(value) {
2024-11-10 07:01:22 +00:00
//@ts-ignore
2024-12-01 11:56:54 +00:00
return new (Date.bind.apply(Date, __spreadArray([void 0], value.map(function (v, i) { return String(i === 1 ? v - 1 : v); }), false)))();
2024-11-10 07:01:22 +00:00
}
/**
* date转换为value数组
* @param value
* @returns
*/
2024-12-01 11:56:54 +00:00
export function getValueByDate(date, precision) {
2024-11-10 07:01:22 +00:00
var fields = [
'getFullYear',
'getMonth',
'getDate',
'getHours',
'getMinutes',
'getSeconds',
];
var value = [];
2024-12-01 11:56:54 +00:00
if (!date)
return value;
2024-11-10 07:01:22 +00:00
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
*/
2024-12-01 11:56:54 +00:00
export function getValidValue(value) {
2024-11-10 07:01:22 +00:00
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
*/
2024-12-01 11:56:54 +00:00
export function isEqualDate(date1, date2) {
2024-11-10 07:01:22 +00:00
if (date1 instanceof Date && date2 instanceof Date) {
2024-12-01 11:56:54 +00:00
return dayjs(date1).isSame(date2);
2024-11-10 07:01:22 +00:00
}
return date1 === date2;
}