Zlpt_Portal/src/utils/time.ts

141 lines
4.2 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.

import moment from 'moment'
/* eslint-disable @typescript-eslint/no-explicit-any */
/*
参考博客
https://blog.csdn.net/qq_36228377/article/details/125196997
*/
export function formatTime(curTime: string, formatVal: string) {
/*
格式化时间
curTIme:要格式化的时间
formatVal:格式化时间的格式
*/
// 例如 curTime 2021-02-03 12-21-22 formatVal YYYY年MM月DD日 HH时mm分ss秒
return moment(curTime).format(formatVal)
}
// 时间格式
/* M 数字表示的月份,没有前导零 1到12
MM 数字表示的月份,有前导零 01到12
MMM 三个字母缩写表示的月份 Jan到Dec
MMMM 月份,完整的文本格式 January到December
Q 季度 1到4
D 月份中的第几天,没有前导零 1到31
DD 月份中的第几天,有前导零 01到31
d 星期中的第几天,数字表示 0到60表示周日6表示周六
ddd 三个字母表示星期中的第几天 Sun到Sat
dddd 星期几,完整的星期文本 从Sunday到Saturday
w 年份中的第几周 如42表示第42周
YYYY 四位数字完整表示的年份 如2014 或 2000
YY 两位数字表示的年份 如14 或 98
A 大写的AM PM AM PM
a 小写的am pm am pm
HH 小时24小时制有前导零 00到23
H 小时24小时制无前导零 0到23
hh 小时12小时制有前导零 00到12
h 小时12小时制无前导零 0到12
m 没有前导零的分钟数 0到59
mm 有前导零的分钟数 00到59
s 没有前导零的秒数 1到59
ss 有前导零的描述 01到59
X Unix时间戳 1411572969 */
export function getDiffTime(start: string, end: string, unit: any) {
/*
start 开始时间
end 结束时间
unit 时间单位
*/
moment(start).diff(moment(end), unit) //32
}
/**
* 格式化日期字符串
* timestamp 时间戳
*/
export function formatDate(timestamp: any) {
// 补全为13位
const arrTimestamp: any = (timestamp + '').split('')
for (let start = 0; start < 13; start++) {
if (!arrTimestamp[start]) {
arrTimestamp[start] = '0'
}
}
timestamp = arrTimestamp.join('') * 1
const minute = 1000 * 60
const hour = minute * 60
const day = hour * 24
const month = day * 30
const now = new Date().getTime()
const diffValue = now - timestamp
// 如果本地时间反而小于变量时间
if (diffValue < 0) {
return '不久前'
}
// 计算差异时间的量级
const monthC: any = diffValue / month
const weekC: any = diffValue / (7 * day)
const dayC: any = diffValue / day
const hourC: any = diffValue / hour
const minC: any = diffValue / minute
// 数值补0方法
const zero = function (value: number) {
if (value < 10) {
return '0' + value
}
return value
}
// 使用
if (monthC > 4) {
// 超过1年直接显示年月日
return (function () {
const date = new Date(timestamp)
return (
date.getFullYear() +
'年' +
zero(date.getMonth() + 1) +
'月' +
zero(date.getDate()) +
'日'
)
})()
} else if (monthC >= 1) {
return parseInt(monthC) + '月前'
} else if (weekC >= 1) {
return parseInt(weekC) + '周前'
} else if (dayC >= 1) {
return parseInt(dayC) + '天前'
} else if (hourC >= 1) {
return parseInt(hourC) + '小时前'
} else if (minC >= 1) {
return parseInt(minC) + '分钟前'
}
return '刚刚'
}
export const getNewDay = (dateTemp: any, days: any,separator:any = '.') => {
console.log("dateTemp",dateTemp,days)
if(!dateTemp ){
return ""
}
dateTemp = dateTemp.split(separator);
//转换为MM-DD-YYYY格式
let nDate: any = new Date(dateTemp[1] + "-" + dateTemp[2] + "-" + dateTemp[0]);
let millSeconds: any = Math.abs(nDate) + days * 24 * 60 * 60 * 1000;
let rDate: any = new Date(millSeconds);
let year: any = rDate.getFullYear();
let month: any = rDate.getMonth() + 1;
if (month < 10) month = "0" + month;
let date = rDate.getDate();
if (date < 10) date = "0" + date;
return year + "." + month + "." + date;
}