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