组件描述:
- formatDate:删除当前时间,输出为
HH:mm:ss
格式。 - dateFormat:根据自定义格式
fmt
指定的计时器,例如Y-m-d
表示年-月-日
。 - get1stAndToday:获取最近的日期,返回格式为
[昨日开始日期, 昨日结束日期]
。 - getday:获取最近和今天的日期,返回
[昨日日期, 今日日期]
。 - 过去7天:获取过去7天的日期范围,返回
[七天前日期, 昨日日期]
。 - 过去30天:获取过去30天的日期范围,返回
[三十天前日期, 昨日日期]
。 - pastWeek:获取本周的日期范围,返回
[本周开始日期, 本周结束日期]
。 - pastMonth:获取本月的日期范围,返回
[本月开始日期, 本月结束日期]
。
// 格式化日期
export function formatDate() {
const now = new Date();
let hour = now.getHours();
let minute = now.getMinutes();
let second = now.getSeconds();
if (hour < 10) hour = '0' + hour;
if (minute < 10) minute = '0' + minute;
if (second < 10) second = '0' + second;
return `${hour}:${minute}:${second}`;
}
function dateFormat(fmt, time) {
let date = new Date(time);
let ret;
const opt = {
// 年
'Y+': date.getFullYear().toString(),
// 月
'm+': (date.getMonth() + 1).toString(),
// 日
'd+': date.getDate().toString()
// 有其他格式化字符需求可以继续添加,必须转化成字符串
};
for (const k in opt) {
ret = new RegExp('(' + k + ')').exec(fmt);
if (ret) {
fmt = fmt.replace(
ret[1],
ret[1].length === 1 ? opt[k] : opt[k].split('').map((_, i) => i === 0 ? opt[k][0] : '0').join('')
);
}
}
return fmt;
}
// 获取昨日的日期
export function get1stAndToday() {
let toData = new Date(new Date().toLocaleDateString()).getTime();
let yesterdayStart = toData - 3600 * 24 * 1000;
let yesterdayEnd = yesterdayStart + 24 * 60 * 60 * 1000 - 1;
let startDay1 = dateFormat('Y-m-d', yesterdayStart);
let endDay1 = dateFormat('Y-m-d', yesterdayEnd);
return [startDay1, endDay1];
}
// 获取昨日、今日日期
export function getday() {
let toData = new Date(new Date().toLocaleDateString()).getTime();
let yesterdays = toData - 3600 * 24 * 1000;
let yesterday = dateFormat('Y-m-d', yesterdays);
let today = dateFormat('Y-m-d', toData);
return [yesterday, today];
}
// 获取近7日
export function past7Day() {
let toData = new Date(new Date().toLocaleDateString()).getTime();
let past7daysStart = toData - 7 * 3600 * 24 * 1000;
let past7daysEnd = toData - 1;
let days7Start = dateFormat('Y-m-d', past7daysStart);
let days7End = dateFormat('Y-m-d', past7daysEnd);
return [days7Start, days7End];
}
// 获取近30日
export function past30Day() {
let toData = new Date(new Date().toLocaleDateString()).getTime();
let past30daysStart = toData - 30 * 3600 * 24 * 1000;
let past30daysEnd = toData - 1;
let days30Start = dateFormat('Y-m-d', past30daysStart);
let days30End = dateFormat('Y-m-d', past30daysEnd);
return [days30Start, days30End];
}
// 获取本周
export function pastWeek() {
let toData = new Date(new Date().toLocaleDateString()).getTime();
let nowDayOfWeek = new Date().getDay();
let weekStartData = toData - (nowDayOfWeek - 1) * 24 * 60 * 60 * 1000;
let weekEndData = toData + (7 - nowDayOfWeek) * 24 * 60 * 60 * 1000;
let weekStart = dateFormat('Y-m-d', weekStartData);
let weekEnd = dateFormat('Y-m-d', weekEndData);
return [weekStart, weekEnd];
}
// 获取本月
export function pastMonth() {
let year = new Date().getFullYear();
let month = new Date().getMonth();
let monthStartData = new Date(year, month, 1).getTime();
let monthEndData = new Date(year, month + 1, 0).getTime() + 24 * 60 * 60 * 1000 - 1;
let monthStart = dateFormat('Y-m-d', monthStartData);
let monthEnd = dateFormat('Y-m-d', monthEndData);
return [monthStart, monthEnd];
}
使用:
引入:
import {
get1stAndToday,
past7Day,
past30Day,
pastWeek,
pastMonth,
} from '@/utils/formValidate';
在需要获取的地方直接使用,即可获得选中的时间
const tateData = ref([]);
// 获取当前选中的tab时间
const getTitleNum = (data) => {
switch (data) {
case 1:
tateData.value = get1stAndToday();
break;
case 2:
tateData.value = past7Day();
break;
case 3:
tateData.value = past30Day();
break;
case 4:
tateData.value = pastWeek();
break;
case 5:
tateData.value = pastMonth();
break;
}
init(tateData.value[0], tateData.value[1]);
};