Files
fe_service_ebtp_frontend/src/utils/DateUtils.ts
2022-03-10 14:24:13 +08:00

182 lines
4.9 KiB
TypeScript
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.

/*
* @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);
}