2020-12-23 11:14:35 +08:00
|
|
|
|
/*
|
|
|
|
|
* @Author: liqiang
|
|
|
|
|
* @Date: 2020-12-02 14:25:23
|
2022-03-10 14:24:13 +08:00
|
|
|
|
* @LastEditTime: 2021-03-25 15:46:32
|
2020-12-23 11:14:35 +08:00
|
|
|
|
* @LastEditors: Please set LastEditors
|
|
|
|
|
* @Description: 日期工具类
|
|
|
|
|
* @FilePath: \ebtp-cloud-frontend\src\utils\DateUtils.ts
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
import moment from "moment";
|
|
|
|
|
import { isEmpty } from "./CommonUtils";
|
|
|
|
|
/**
|
|
|
|
|
* 日期时间格式
|
|
|
|
|
*/
|
|
|
|
|
export const dateTimeFormatter = 'yyyy-MM-DD HH:mm:ss';
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 用于保存 日期格式化
|
|
|
|
|
* @param date
|
|
|
|
|
*/
|
|
|
|
|
export function saveDateTimeFormatter(date: any) {
|
|
|
|
|
if (isEmpty(date)) {
|
|
|
|
|
return date;
|
|
|
|
|
}
|
|
|
|
|
return date.format(dateTimeFormatter);
|
|
|
|
|
}
|
|
|
|
|
/**
|
|
|
|
|
* 用于回显 日期格式化
|
|
|
|
|
* @param date
|
|
|
|
|
*/
|
|
|
|
|
export function echoDateTimeFormatter(date: any) {
|
|
|
|
|
if (isEmpty(date)) {
|
|
|
|
|
return date;
|
|
|
|
|
}
|
|
|
|
|
return moment(date, dateTimeFormatter);
|
|
|
|
|
}
|
|
|
|
|
/**
|
|
|
|
|
* 判断当前时间是否超过指定时间
|
|
|
|
|
*/
|
|
|
|
|
export function nowExceedSpecifiedTime(specifiedTime: string) {
|
|
|
|
|
let now = new Date(),
|
|
|
|
|
specified = new Date(specifiedTime);
|
|
|
|
|
return now.getTime() > specified.getTime();
|
|
|
|
|
}
|
|
|
|
|
|
2021-01-16 11:29:42 +08:00
|
|
|
|
export function showTimeDefaultValue() {
|
|
|
|
|
return moment('YYYY/MM/DD HH:mm:ss');
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function range(start: any, end: any) {
|
|
|
|
|
const result = [];
|
|
|
|
|
for (let i = start; i < end; i++) {
|
|
|
|
|
result.push(i);
|
|
|
|
|
}
|
|
|
|
|
return result;
|
|
|
|
|
}
|
|
|
|
|
/**
|
|
|
|
|
* 禁止选择当前之前的日期
|
|
|
|
|
* @param current
|
|
|
|
|
*/
|
|
|
|
|
export function datePickerDisabledDate(current: any) {
|
|
|
|
|
return current && current < moment().subtract(1, 'days').endOf('day');
|
|
|
|
|
}
|
|
|
|
|
/**
|
|
|
|
|
* 禁止选择当前之前的时间
|
|
|
|
|
* @param current
|
|
|
|
|
*/
|
|
|
|
|
export function datePickerDisabledTime(current: any) {
|
|
|
|
|
if (current) {
|
|
|
|
|
let today = moment().date();
|
|
|
|
|
if (today == current.date()) {
|
|
|
|
|
let hour = Number(moment().hour());
|
|
|
|
|
let minute = Number(moment().minutes());
|
|
|
|
|
return {
|
|
|
|
|
disabledHours: () => range(0, hour),
|
2022-03-10 14:24:13 +08:00
|
|
|
|
disabledMinutes: () => hour === current.hour() ? range(0, minute) : []
|
2021-01-16 11:29:42 +08:00
|
|
|
|
};
|
|
|
|
|
} else {
|
|
|
|
|
return {
|
|
|
|
|
disabledHours: () => [],
|
|
|
|
|
disabledMinutes: () => []
|
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return {
|
|
|
|
|
disabledHours: () => range(0, 24),
|
|
|
|
|
disabledMinutes: () => range(0, 60),
|
|
|
|
|
disabledSeconds: () => range(0, 60)
|
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 判断当前时间是否在两个时间段之内
|
|
|
|
|
* @param d1 开始时间
|
|
|
|
|
* @param d2 结束时间
|
|
|
|
|
*/
|
|
|
|
|
export function nowInDateBetwen(d1: any, d2: any) {
|
|
|
|
|
if (isEmpty(d1) || isEmpty(d2)) {
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
//如果时间格式是正确的,那下面这一步转化时间格式就可以不用了
|
|
|
|
|
// let dateBegin = new Date(d1.replace(/-/g, "/"));//将-转化为/,使用new Date
|
|
|
|
|
// let dateEnd = new Date(d2.replace(/-/g, "/"));//将-转化为/,使用new Date
|
|
|
|
|
//将-转化为/,使用new Date
|
|
|
|
|
let dateBegin = new Date(d1),
|
|
|
|
|
//将-转化为/,使用new Date
|
|
|
|
|
dateEnd = new Date(d2),
|
|
|
|
|
//获取当前时间
|
|
|
|
|
dateNow = new Date();
|
|
|
|
|
let beginDiff = dateNow.getTime() - dateBegin.getTime();//时间差的毫秒数
|
|
|
|
|
let beginDayDiff = Math.floor(beginDiff / (24 * 3600 * 1000));//计算出相差天数
|
|
|
|
|
//时间差的毫秒数
|
|
|
|
|
let endDiff = dateEnd.getTime() - dateNow.getTime();
|
|
|
|
|
//计算出相差天数
|
|
|
|
|
let endDayDiff = Math.floor(endDiff / (24 * 3600 * 1000));
|
|
|
|
|
//已过期
|
|
|
|
|
if (endDayDiff < 0) {
|
|
|
|
|
return false
|
|
|
|
|
}
|
|
|
|
|
//没到开始时间
|
|
|
|
|
if (beginDayDiff < 0) {
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
/**
|
|
|
|
|
* 获取最大时间
|
|
|
|
|
* @param arr
|
|
|
|
|
*/
|
|
|
|
|
export function getMaxDate(arr: string[]) {
|
|
|
|
|
if (isEmpty(arr) || arr.length === 0) {
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
let index = 0;
|
|
|
|
|
for (let i = 1; i < arr.length; i++) {
|
|
|
|
|
let date = new Date(arr[i]);
|
|
|
|
|
index = new Date(arr[index]).getTime() > date.getTime() ? index : i;
|
|
|
|
|
}
|
|
|
|
|
return arr[index];
|
|
|
|
|
}
|
|
|
|
|
/**
|
|
|
|
|
* 判断两个日期间隔天数
|
|
|
|
|
* @param date1
|
|
|
|
|
* @param date2
|
|
|
|
|
*/
|
|
|
|
|
export function judgmentIntervalDay(date1: any, date2: any) {
|
2022-03-10 14:24:13 +08:00
|
|
|
|
// let dateSpan,
|
|
|
|
|
// iDays;
|
|
|
|
|
// date1 = Date.parse(date1);
|
|
|
|
|
// date2 = Date.parse(date2);
|
|
|
|
|
// dateSpan = date2 - date1;
|
|
|
|
|
// dateSpan = Math.abs(dateSpan);
|
|
|
|
|
// iDays = Math.floor(dateSpan / (24 * 3600 * 1000));
|
|
|
|
|
// return iDays
|
|
|
|
|
date1 = moment(date1).startOf('day')
|
|
|
|
|
date2 = moment(date2).startOf('day')
|
|
|
|
|
return date2?.diff(date1, "days")
|
2021-01-16 11:29:42 +08:00
|
|
|
|
};
|
|
|
|
|
/**
|
|
|
|
|
* 判断第一个时间是否大于第二个
|
|
|
|
|
* @param date1
|
|
|
|
|
* @param date2
|
|
|
|
|
*/
|
|
|
|
|
export function judgmentOfTwoTimePeriods(date1: string, date2: string) {
|
|
|
|
|
let d1 = new Date(date1),
|
2022-03-10 14:24:13 +08:00
|
|
|
|
d2 = new Date(date2);
|
2021-01-16 11:29:42 +08:00
|
|
|
|
return d1.getTime() > d2.getTime();
|
2022-03-10 14:24:13 +08:00
|
|
|
|
}
|
|
|
|
|
/**
|
|
|
|
|
* 给日期加n天或者减n天
|
|
|
|
|
* @param date
|
|
|
|
|
* @param day
|
|
|
|
|
*/
|
|
|
|
|
export function addOrSubtractADayFromTheDate(date: string, day: number) {
|
|
|
|
|
if(isEmpty(date)){
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
let d1 = new Date(date);
|
|
|
|
|
let d2 = d1.setDate(d1.getDate() + day);
|
|
|
|
|
return moment(d2).format(dateTimeFormatter);
|
|
|
|
|
}
|