需求
- 获取当前日期,以及当前日期的前30天,格式为yyyy-mm-dd(如2022-10-18)
代码
这里我为了后续使用方便,封装了一个工具类js文件,且里面参数没有直接写死的
utils.js
const formatNumber = n => {
n = n.toString()
return n[1] ? n : '0' + n
}
// 获取当前日期 yyy-mm-dd
const formatDate = date => {
const year = date.getFullYear()
const month = date.getMonth() + 1
const day = date.getDate()
return [year, month, day].map(formatNumber).join('-')
}
// 获取前n天的日期 last为要求的哪一天,lastDate为哪一天的前n天
const getTimeLastDate = (last,lastDate) => {
const year = last.getFullYear()
const day = last.getDate()
const ti = day - lastDate
// const month6 = last.getMonth() + 1
// const dayOfWeek = last.getDay() //今天本周的第几天
// 判断是否月初
if (ti <= 0) {
const month = last.getMonth() + 1 - 1
const d = new Date(year, month, 0)
const dayBig = d.getDate() //获取当月的所有天数
const ti1 = dayBig + ti
return [year, month, ti1].map(formatNumber).join('-')
} else {
const month = last.getMonth() + 1
return [year, month, ti].map(formatNumber).join('-')
}
// return [year, month, day].map(formatNumber).join('-')
}
module.exports = {
formatDate: formatDate,
getTimeLastDate: getTimeLastDate
}
使用(以在小程序 中为例),
直接在声明data的时候调用即可
const utils = require('../../../utils/util');
data:{
startDate: utils.getTimeLastDate(new Date(), 30), //当前日期前30天 要前几天的数据就传几
endDate: utils.formatDate(new Date()), // 当前日期
}
以上的代码在计算超过30天的会有问题,建议使用下面这个
getNextDate(date, day) {
var dd = new Date(date);
dd.setDate(dd.getDate() + day);
var y = dd.getFullYear();
var m = dd.getMonth() + 1 < 10 ? "0" + (dd.getMonth() + 1) : dd.getMonth() + 1;
var d = dd.getDate() < 10 ? "0" + dd.getDate() : dd.getDate();
return y + "-" + m + "-" + d;
},
调用(当前日期前30天):
getNextDate(new Date(), -30)