第一部分:获取时间前一天,前两天
// 获取时间 var yesterday = getDay(-1, '-'); // -1 代表前一天,-2前两天...
export function getDay(num, str) {
let today = new Date();
let nowTime = today.getTime();
let ms = 24 * 3600 * 1000 * num;
today.setTime(parseInt(nowTime + ms));
let oYear = today.getFullYear();
let oMoth = (today.getMonth() + 1).toString();
if (oMoth.length <= 1) oMoth = '0' + oMoth;
let oDay = today.getDate().toString();
if (oDay.length <= 1) oDay = '0' + oDay;
return oYear + str + oMoth + str + oDay;
}
第二部分:格式化时间函数
// 用于格式化时间
// 设置按需导出
export function formatDate(value, format) {
//value: 需要格式化的数据
//format: 指定格式 yyyy-MM-dd hh:mm:ss
let date = new Date(value);
// 获取年份
let year = date.getFullYear();
if (/(y+)/.test(format)) {
// 获取匹配组的内容
let content = RegExp.$1;
format = format.replace(
content,
year.toString().slice(4 - content.length)
);
}
let o = {
// y: date.getFullYear(), // 用这一句也行,但只适用于四位数显示时候用
M: date.getMonth() + 1,
d: date.getDate(),
h: date.getHours(),
m: date.getMinutes(),
s: date.getSeconds()
};
for (let key in o) {
// 构造动态正则
let reg = new RegExp(`(${key}+)`);
if (reg.test(format)) {
// 获取匹配组的内容
let content = RegExp.$1;
let k =
o[key] >= 10
? o[key]
: content.length == 2
? '0' + o[key]
: o[key];
format = format.replace(content, k);
}
}
return format;
}
第三部分:时间戳转换日期函数
//时间戳转换日期
export function timestampToTime(timestamp) {
let date = new Date(timestamp); //时间戳为10位需*1000,时间戳为13位的话不需乘1000
let Y = date.getFullYear() + '-';
let M =
(date.getMonth() + 1 < 10
? '0' + (date.getMonth() + 1)
: date.getMonth() + 1) + '-';
let D = date.getDate() + ' ';
let h = date.getHours() + ':';
let m = date.getMinutes() + ':';
let s = date.getSeconds();
return Y + M + D + h + m + s;
}
第四部分:获取前一个月的日期
//获取前一个月的日期
//入参格式:YYYY-MM-DD
export function getPreMonthDay(date) {
let arr = date.split('-');
let year = arr[0]; //当前年
let month = arr[1]; //当前月
let day = arr[2]; //当前日
//验证日期格式为YYYY-MM-DD
let reg = date.match(/^[0-9]{4}-[0-9]{1,2}-[0-9]{1,2}$/);
if (!reg || month > 12 || day > 31) {
console.log('日期或格式有误!请输入正确的日期格式(年-月-日)');
return;
}
let pre_year = year; //前一个月的年
let pre_month = parseInt(month) - 1; //前一个月的月,以下几行是上月数值特殊处理
if (pre_month === 0) {
pre_year = parseInt(pre_year) - 1;
pre_month = 12;
}
let pre_day = parseInt(day); //前一个月的日,以下几行是特殊处理前一个月总天数
let pre_month_alldays = new Date(pre_year, pre_month, 0).getDate(); //巧妙处理,返回某个月的总天数
if (pre_day > pre_month_alldays) {
pre_day = pre_month_alldays;
}
if (pre_month < 10) {
//补0
pre_month = '0' + pre_month;
}
if (pre_day < 10) {
//补0
pre_day = '0' + pre_day;
}
let pre_month_day = pre_year + '-' + pre_month + '-' + pre_day;
return pre_month_day;
}