JS获取今天的开始和结束,本周的开始和结束,本月的开始和结束
直接上代码(我自己没有测试过本周和本月的函数):
var initDateTools = (function(){
// 获取今天的开始:00:00:00:00
function getTodayStartTime(){
return new Date(new Date().setHours(0, 0, 0, 0));
}
// 获取今天的结束
function getTodayEndTime(){
return new Date(new Date().setHours(23, 59, 59, 0));
}
// 获取本周的开始
function getWeekStartTime(){
var now = new Date();
// 获取今天是星期几
var weekDay = now.getDay() || 7;
var date = now.getDate(); // 今天几号
// 为什么要额外减一呢?
/**
* 假如今天是周一,则weekDay是1
* 今天恰好是这周的开始,所以应该减去0,而不是1
* 同理,今天是周二,则减去1,得到这周开始的那天;
*/
var startTime = new Date(new Date(now.setDate(date - weekDay - 1)).setHours(0, 0, 0, 0));
return startTime;
}
// 获取本周的结束
function getWeekEndTime(){
var now = new Date();
var weekDay = now.getDay() || 7;
var date = now.getDate();
var endTime = new Date(new Date(now.setDate(date + 7 - weekDay)).setHours(23, 59, 59, 0));
return endTime;
}
// 获取本月的开始
function getMonthStartTime(){
var now = new Date();
// 每个月都是从1号开始的
return new Date(new Date(now.setDate(1)).setHours(0, 0, 0, 0));
}
// 获取本月的结束
function getMonthEndTime(){
// 思路
/**
* 1. 先获取下一月的第一天的时间戳
* 2. 然后减去一天的时间计算得出本月的最后一天
*/
var now = new Date();
var nextMonth = now.getMonth() + 1;
// 下一个月第一天的时间戳
var firstDay = new Date(now.setMonth(nextMonth)).setDate(1);
return new Date(new Date(firstDay - 1000 * 60 * 60 * 24).setHours(23, 59, 59, 0));
}
return{
getTodayStartTime: getTodayStartTime,
getTodayEndTime: getTodayEndTime,
getWeekStartTime: getWeekStartTime,
getWeekEndTime: getWeekEndTime,
getMonthStartTime: getMonthStartTime,
getMonthEndTime: getMonthEndTime
}
})();