前几天做OEM的需求,需要获取当前时间往前 10 个小时、 10 天、10 周、 10月。方法如下:
// 格式化时间
/*
* date: 日期对象
* type: 格式化类型。参数有4种 'hour': 2018-03-07 19:00; 'day': 2018-03-07; 'week': 03-05 至 03-11; 'month': 2018-03
*/
function formattingDate(date, type) {
let year = date.getFullYear(),
month = (date.getMonth() + 1) < 10 ? '0' + (date.getMonth() + 1) : (date.getMonth() + 1),
day = date.getDate() < 10 ? '0' + date.getDate() : date.getDate(),
hour = date.getHours() < 10 ? '0' + date.getHours() : date.getHours();
if (!type || type === 'day') { // 默认显示年、月、日
return year + "-" + month + "-" + day;
} else if (type === 'hour') {
return year + "-" + month + "-" + day + " " + hour + ":00";
} else if (typ === 'week') {
return month + "-" + day;
} else if (type === 'month') {
return year + "-" + month;
}
}
复制代码
1、获取当前时间往前 10 个小时
function getTenHour () {
let nowDateTime = new Date().getTime(),
noeHourTime = 60 * 60 * 1000,
hourArr = [];
for (var i = 0; i < 10; i++) {
let itemHourTime = nowDateTime - i * noeHourTime,
itemHour = formattingDate(new Date(itemHourTime), 'hour');
hourArr.push(itemHour);
}
return hourArr;
}
复制代码
2、获取当前时间往前 10 天
function getTenDay () {
let nowDateTime = new Date().getTime();
noeDayTime = 24 * 60 * 60 * 1000,
dayArr = [];
for (var i = 0; i < 10; i++) {
let itemDayTime = nowDateTime - i * noeDayTime,
itemDay = formattingDate(new Date(itemDayTime), 'day');
dayArr.push(itemDay);
}
return dayArr;
}
复制代码
上面还是挺简单的,就是用当前的毫秒数减去单位毫秒,然后初始化一个日期对象就好了。但是获取周、月就麻烦了
3、获取当前时间往前 10 周
function getTenWeek () {
let nowDate = new Date(),
nowDateTime = nowDate.getTime(),
noeDayTime = 24 * 60 * 60 * 1000,
nowDay = nowDate.getDay() === 0 ? 7 : nowDate.getDay(), // 获取当前周几。注意:周日的值为 0 ;
nowMondayTime = nowDateTime - (nowDay - 1) * noeDayTime, // 获取当前所在周的周一
weekArr = [];
for (var i = 0; i < 10; i++) {
let itemMondayTime = nowMondayTime - i * 7 * noeDayTime, // 每个周一的毫秒数
itemMonday = formattingDate(new Date(itemMondayTime), 'week'),
itemWeekdayTime = nowMondayTime + i * 6 * noeDayTime, // 每个周日的毫秒数
itemWeekDay = formattingDate(new Date(itemWeekdayTime), 'week');
weekArr.push(itemMonday + ' 至 ' + itemWeekDay);
}
return weekArr;
}
复制代码
4、获取当前时间往前 10 月
function getTenMonth () {
let nowDate = new Date(),
year = nowDate.getFullYear(),
month = nowDate.getMonth(),
nowMonthOneDay = new Date(year, month, 1), // 当前月的第一天
tempTime = nowMonthOneDay.getTime(),
oneDayTime = 24 * 60 * 60 * 1000,
monthArr = [];
for (var i = 0; i < 10; i++) {
let nowMonth = formattingDate(new Date(tempTime),'month'), // 当前月
prevMonthDate = new Date(tempTime - oneDayTime), // 上一个月的最后一天
prevYear = prevMonthDate.getFullYear(),
prevMonth = prevMonthDate.getMonth(),
prevMonthOneDay = new Date(prevYear, prevMonth, 1); // 上一个月的第一天
tempTime = prevMonthOneDay.getTime();
monthArr.push()
}
return monthArr;
}
复制代码