182 lines
4.9 KiB
TypeScript
182 lines
4.9 KiB
TypeScript
/*
|
||
* @Author: liqiang
|
||
* @Date: 2020-12-02 14:25:23
|
||
* @LastEditTime: 2021-03-25 15:46:32
|
||
* @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();
|
||
}
|
||
|
||
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),
|
||
disabledMinutes: () => hour === current.hour() ? range(0, minute) : []
|
||
};
|
||
} 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) {
|
||
// 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")
|
||
};
|
||
/**
|
||
* 判断第一个时间是否大于第二个
|
||
* @param date1
|
||
* @param date2
|
||
*/
|
||
export function judgmentOfTwoTimePeriods(date1: string, date2: string) {
|
||
let d1 = new Date(date1),
|
||
d2 = new Date(date2);
|
||
return d1.getTime() > d2.getTime();
|
||
}
|
||
/**
|
||
* 给日期加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);
|
||
}
|