//@ts-ignore import moment from 'moment' //@ts-ignore import {getServerDateApi} from "@/api/public-api"; import XEUtils from 'xe-utils' export enum DATEFORMAT { DATE = 'YYYY-MM-DD', DATE_TIME = 'YYYY-MM-DD HH:mm:ss', TIME = 'HH:mm:ss', DATE_HOUR_CHINE = 'YYYY年MM月DD日HH点' } export function getDate() { const date = new Date() const year = date.getFullYear() let month = date.getMonth() + 1 let day = date.getDate() return year + '-' + ('0' + month).slice(-2) + '-' + ('0' + day).slice(-2) } export function getDatetime() { const now = new Date() const year = now.getFullYear() const month = now.getMonth() + 1 const day = now.getDate() const hh = now.getHours() const mm = now.getMinutes() const ss = now.getSeconds() let clock = year + '-' if (month < 10) clock += '0' clock += month + '-' if (day < 10) clock += '0' clock += day + ' ' if (hh < 10) clock += '0' clock += hh + ':' if (mm < 10) clock += '0' clock += mm + ':' if (ss < 10) clock += '0' clock += ss return clock } export function compareDate(date1, date2) { const oDate1 = new Date(date1) const oDate2 = new Date(date2) return oDate1.getTime() > oDate2.getTime() } export function huanHangXianShi(date) { let clock = date.split(' ') return clock[0] + '
' + clock[1] } export function formatDatetime(date) { if (typeof date === 'undefined') return null if (date === '' || date === null) return null if (typeof date === 'string') return date const year = date.getFullYear() const month = date.getMonth() + 1 const day = date.getDate() const hh = date.getHours() const mm = date.getMinutes() const ss = date.getSeconds() let clock = year + '-' if (month < 10) clock += '0' clock += month + '-' if (day < 10) clock += '0' clock += day + ' ' if (hh < 10) clock += '0' clock += hh + ':' if (mm < 10) clock += '0' clock += mm + ':' if (ss < 10) clock += '0' clock += ss return clock } export function formatDate(date) { if (typeof date === 'undefined') return null if (date === '' || date === null) return null if (typeof date === 'string') return date const year = date.getFullYear() const month = date.getMonth() + 1 const day = date.getDate() return year + '-' + ('0' + month).slice(-2) + '-' + ('0' + day).slice(-2) } export function getOneMonthOffset() { const myDate = new Date() let year = myDate.getFullYear() let month = myDate.getMonth() let date = myDate.getDate() let end = year + '-' + ('0' + (month + 1)).slice(-2) + '-' + ('0' + date).slice(-2) if (month === 0) { year -= 1 month = 12 } else if (month === 2) { date = date > 28 ? 28 : date } else { date = date > 30 ? 30 : date } let start = year + '-' + ('0' + month).slice(-2) + '-' + ('0' + date).slice(-2) return {start, end} } export function getRawMonthOffset() { const myDate = new Date() let year = myDate.getFullYear() let month = myDate.getMonth() let end = year + '-' + ('0' + (month + 1)).slice(-2) if (month === 0) { year -= 1 month = 12 } let start = year + '-' + ('0' + month).slice(-2) return {start, end} } export function getDateRangeFormatDate(data) { let startTime = '' let endTime = '' //用户手动输入了日期 并且没有按下大键盘上面的回车 if (data === null || data.length === 0) return {startTime, endTime} if (typeof data[0].$d !== 'undefined') { startTime = getFormatDatetime(data[0].$d, DATEFORMAT.DATE) + ' 00:00:00' endTime = getFormatDatetime(data[1].$d, DATEFORMAT.DATE) + ' 23:59:59' } else { startTime = getFormatDatetime(data[0], DATEFORMAT.DATE) + ' 00:00:00' endTime = getFormatDatetime(data[1], DATEFORMAT.DATE) + ' 23:59:59' } return {startTime, endTime} } export function getDateRangeFormatDateTime(date) { let startTime = '' let endTime = '' if (!date) return {startTime, endTime} if (!date[0] || !date[1]) return {startTime, endTime} //用户手动输入了日期 并且没有按下大键盘上面的回车 if (date[0].$d) { startTime = getFormatDatetime(date[0].$d) endTime = getFormatDatetime(date[1].$d) } else { startTime = getFormatDatetime(date[0]) endTime = getFormatDatetime(date[1]) } return {startTime, endTime} } export function formatYear(date) { if (typeof date === 'undefined') return null if (date === '' || date === null) return null if (typeof date === 'string') return date return date.getFullYear() } export function formatMonth(date) { if (typeof date === 'string') return date if (typeof date === 'undefined') return null if (date === '' || date === null) return null const year = date.getFullYear() const month = date.getMonth() + 1 return year + '-' + ('0' + month).slice(-2) } /** * 格式化日期 * @param date 日期 * @param pattern 格式 * @returns {string} 返回格式好的日期 */ export function getFormatDatetime(date: any, pattern: DATEFORMAT | string = DATEFORMAT.DATE_TIME): string { if (XEUtils.isEmpty(date)) { return '' } return moment(date).format(pattern) } export function getLastMonth() { const myDate = new Date() let year = myDate.getFullYear() let month = myDate.getMonth() if (month === 0) { year -= 1 month = 12 } return year + '-' + ('0' + month).slice(-2) } export function judgeToday(date1, date2) { return moment(date2).isSame(moment(), "day") } // 时间相减 export function subtractTime(date1, date2) { date1 = moment(date1) date2 = moment(date2) return date1.diff(date2, 'day', false) } export function formatMonth1(date) { if (typeof date === 'undefined') return null if (date === '' || date === null) return null if (typeof date === 'string') return date const year = date.getFullYear() const month = date.getMonth() + 1 return year + ('0' + month).slice(-2) } export function getDateTiffDays(value) { // value---最近天数 return moment(new Date().getTime() - value * 1000 * 24 * 60 * 60).format('YYYY-MM-DD hh:mm:ss') } // 获取前day的日期(arr是日期拼接符,默认'-') export function getDayAgo(day, arr, type) { var today = new Date(); // 日期拼接符 if (!arr) { arr = '-' } var targetday_milliseconds = today.getTime() + 1000 * 60 * 60 * 24 * day; //注意,这行是关键代码 today.setTime(targetday_milliseconds); var tYear = today.getFullYear(); var tMonth = today.getMonth(); var tDate = today.getDate(); tMonth = doHandleMonth(tMonth + 1); tDate = doHandleMonth(tDate); // 显示年月 if (1 === type) { return tYear + arr + tMonth } else if (2 === type) { // 显示月日 return tMonth + arr + tDate; } else { // 显示年月日 return tYear + arr + tMonth + arr + tDate; } } function doHandleMonth(month) { let m = month; if (month.toString().length === 1) { m = "0" + month; } return m; } export const currentAndAFewDaysAgo = async (day = 7, format: string = 'YYYY-MM-DD') => { let date = await getServerDateApi(); let now = moment(new Date(date)).format(format) let start = moment(new Date(date)).subtract(day, 'day') return [moment(start).format(format), now] } export const dateRangeAddTime = (val) => { if (XEUtils.isEmpty(val)) { return { start: '', end: '' } } if (val.length === 2) { let start = moment(val[0]).format(DATEFORMAT.DATE) let end = moment(val[1]).format(DATEFORMAT.DATE) return { start: start + ' 00:00:00', end: end + ' 23:59:59' } } return { start: '', end: '' } } export const getDateRange = (val) => { if (XEUtils.isEmpty(val)) { return {start: '', end: ''} } if (!XEUtils.isArray(val)) { return {start: '', end: ''} } if (val.length === 2) { let start = moment(val[0]).format(DATEFORMAT.DATE) let end = moment(val[1]).format(DATEFORMAT.DATE) return {start, end} } return {start: '', end: ''} } // 获取两个日期的时间差返回天数,使用moment export const getDateDiffToDay = (start, end) => { return moment(end).diff(moment(start), 'day') }