jiaqingjiayi-xiaochengxu/甲情_甲意/node_modules/antd-mini/es/DatePicker/util.js
2024-11-15 11:51:28 +08:00

170 lines
4.7 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.

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