eleven-methods
Version:
常用方法累计
190 lines (189 loc) • 6.92 kB
JavaScript
const dayjs = require('dayjs')
module.exports = class ElevenDay {
constructor() {}
// 动态插入方法
getCurrentYTD() {
let date = new Date()
const year = date.getFullYear() // 获取当前年份
// 每年12个月 这是固定的
const list = Array.from({
length: 12
}, (item, index) => {
let month = index + 1
month = String(month).padStart(2, '0')
return {
value: month,
label: `${month}月`,
children: Array.from({
length: this.mGetDate(year, month, 0)
}, (m, mIndex) => {
let day = mIndex + 1
day = String(day).padStart(2, '0')
return {
value: day,
label: `${day}日`
}
})
}
})
return list
}
// 自定义时间 返回年月日数组对象
getCustomYTD(year) {
// 每年12个月 这是固定的
const list = Array.from({
length: 12
}, (item, index) => {
let month = index + 1
month = String(month).padStart(2, '0')
return {
value: month,
label: `${month}月`,
children: Array.from({
length: this.mGetDate(year, month, 0)
}, (m, mIndex) => {
let day = mIndex + 1
day = String(day).padStart(2, '0')
return {
value: day,
label: `${day}日`
}
})
}
})
return list
}
mGetDate(year, month) {
var d = new Date(year, month, 0);
return d.getDate();
}
// 几天前 或 几天后
AddDays(num) {
var newdate = new Date();
var newtimems = newdate.getTime() + (num * 24 * 60 * 60 * 1000);
newdate.setTime(newtimems);
var time = newdate.getFullYear() + "-" + (newdate.getMonth() + 1) + "-" + newdate.getDate();
return time;
}
// 时间与当前的时间返回 半小时前 。。。
calcTimeRange(val) {
let ms = (new Date() - dayjs(val).$d)
let nowYear = new Date().getFullYear()
let msYear = dayjs(val).year()
// 0<时间<30s,显示:刚刚
let justNow = 30000;
// 30s<时间<60s,显示:1分钟前
let oneMin = 60000;
// 60s<时间<60m,显示:x分钟前
let fewMin = 3600000;
// 60m<时间<24h,显示:x小时前
let oneDay = 86400000;
// 24h<时间<48h,显示:昨天
let yesDay = 172800000;
// 2d<时间<7d,显示x天前
let sevenDay = 604800000;
// 7d<时间 且在本年度,显示:m月d日
let ondYear = oneDay * 365;
// else 显示 日期
let timeRange = ''
if (0 < ms && ms <= justNow) {
timeRange = '刚刚'
} else if (justNow < ms && ms <= oneMin) {
timeRange = '1分钟前'
} else if (oneMin < ms && ms <= fewMin) {
let mins = parseInt(ms / oneMin)
timeRange = mins + '分钟前'
} else if (fewMin < ms && ms <= oneDay) {
let hours = parseInt(ms / fewMin)
timeRange = hours + '小时前'
} else if (oneDay < ms && ms <= yesDay) {
timeRange = '昨天'
} else if (yesDay < ms && ms <= sevenDay) {
let days = parseInt(ms / oneDay)
timeRange = days + '天前'
} else if (sevenDay < ms && ms <= ondYear && nowYear == msYear) {
let month = dayjs(val).month()
let day = dayjs(val).date()
timeRange = ++month + '月' + day + '日'
} else {
timeRange = val.split(' ')[0]
}
return timeRange
}
/***
* @return {*} WeekLastDay 返回本周最后一天的时间
*/
showWeekLastDay() {
let Nowdate = new Date();
let WeekFirstDay = new Date(Nowdate - (Nowdate.getDay() - 1) * 86400000);
let WeekLastDay = new Date((WeekFirstDay / 1000 + 6 * 86400) * 1000);
return WeekLastDay;
}
/*** 本周第一天
* @return {*} WeekFirstDay 返回本周第一天的时间
*/
showWeekFirstDay() {
let Nowdate = new Date();
let WeekFirstDay = new Date(Nowdate - (Nowdate.getDay() - 1) * 86400000);
return WeekFirstDay;
}
/***
* @return {*} MonthFirstDay 返回本月第一天的时间
*/
showMonthFirstDay() {
let Nowdate = new Date();
let MonthFirstDay = new Date(Nowdate.getFullYear(), Nowdate.getMonth());
return MonthFirstDay;
}
/***
* @return {*} MonthLastDay 返回本月最后一天的时间
*/
showMonthLastDay() {
let Nowdate = new Date();
let MonthNextFirstDay = new Date(Nowdate.getFullYear(), Nowdate.getMonth() + 1);
let MonthLastDay = new Date(MonthNextFirstDay - 86400000);
return MonthLastDay;
}
/** 返回指定时间戳之间的时间间隔 更为精细
* @param {*} startTime 开始时间的时间戳
* @param {*} endTime 结束时间的时间戳
* @return {string} str 返回时间字符串
*/
getTimeInterval(startTime, endTime) {
let start = new Date(startTime)
let end = new Date(endTime)
let runTime = parseInt((end - start) / 1000);
let year = Math.floor(runTime / 86400 / 365);
runTime = runTime % (86400 * 365);
let month = Math.floor(runTime / 86400 / 30);
runTime = runTime % (86400 * 30);
let day = Math.floor(runTime / 86400);
runTime = runTime % 86400;
let hour = Math.floor(runTime / 3600);
runTime = runTime % 3600;
let minute = Math.floor(runTime / 60);
runTime = runTime % 60;
let second = runTime;
let str = '';
if (year > 0) {
str = year + '年';
}
if (year <= 0 && month > 0) {
str = month + '月';
}
if (year <= 0 && month <= 0 && day > 0) {
str = day + '天';
}
if (year <= 0 && month <= 0 && day <= 0 && hour > 0) {
str = hour + '小时';
}
if (year <= 0 && month <= 0 && day <= 0 && hour <= 0 && minute > 0) {
str = minute + '分钟';
}
if (year <= 0 && month <= 0 && day <= 0 && hour <= 0 && minute <= 0 && second > 0) {
str += second + '秒';
}
str += '前';
return str;
}
}