JS獲取本週、本季度、本月、上月、本年的開始日期、結束日期
/**
* 獲取本週、本季度、本月、上月的開始日期、結束日期
*/
var now = new Date(); //當前日期
var nowDayOfWeek = now.getDay(); //今天本週的第幾天
var nowDay = now.getDate(); //當前日
var nowMonth = now.getMonth(); //當前月
var nowYear = now.getYear(); //當前年
nowYear += (nowYear < 2000) ? 1900 : 0; //
var lastMonthDate = new Date(); //上月日期
lastMonthDate.setDate(1);
lastMonthDate.setMonth(lastMonthDate.getMonth()-1);
var lastYear = lastMonthDate.getYear();
var lastMonth = lastMonthDate.getMonth();
//格式化日期:yyyy-MM-dd
function formatDate(date) {
var myyear = date.getFullYear();
var mymonth = date.getMonth()+1;
var myweekday = date.getDate();
if(mymonth < 10){
mymonth = "0" + mymonth;
}
if(myweekday < 10){
myweekday = "0" + myweekday;
}
return (myyear+"-"+mymonth + "-" + myweekday);
}
//獲得某月的天數
function getMonthDays(myMonth){
var monthStartDate = new Date(nowYear, myMonth, 1);
var monthEndDate = new Date(nowYear, myMonth + 1, 1);
var days = (monthEndDate - monthStartDate)/(1000 * 60 * 60 * 24);
return days;
}
//獲得本季度的開始月份
function getQuarterStartMonth(){
var quarterStartMonth = 0;
if(nowMonth<3){
quarterStartMonth = 0;
}
if(2<nowMonth && nowMonth<6){
quarterStartMonth = 3;
}
if(5<nowMonth && nowMonth<9){
quarterStartMonth = 6;
}
if(nowMonth>8){
quarterStartMonth = 9;
}
return quarterStartMonth;
}
//獲得本週的開始日期
function getWeekStartDate() {
var weekStartDate = new Date(nowYear, nowMonth, nowDay - nowDayOfWeek);
return formatDate(weekStartDate);
}
//獲得本週的結束日期
function getWeekEndDate() {
var weekEndDate = new Date(nowYear, nowMonth, nowDay + (6 - nowDayOfWeek));
return formatDate(weekEndDate);
}
//獲得本月的開始日期
function getMonthStartDate(){
var monthStartDate = new Date(nowYear, nowMonth, 1);
return formatDate(monthStartDate);
}
//獲得本月的結束日期
function getMonthEndDate(){
var days= getMonthDays(nowMonth);//獲取當月總共有多少天
var monthEndDate = new Date(nowYear, nowMonth, days);
return formatDate(monthEndDate); //返回當月結束時間
}
注意:因為上面這個方法裡的getMonthDays(nowMonth)方法 我嘗試使用失敗,我不知道是什麼原因 所以我用了另外個方法如下(獲得某月的天數,需要配合文章開頭的公式 ):
//獲得某月的天數
function getMonthDays(nowyear,myMonth){
var lastMonthStartDate = new Date(nowyear, lastMonth, 1);
var lastMonthEndDate= new Date(nowyear, lastMonth+ 1, 1);
var days = (lastMonthEndDate- lastMonthStartDate) / (1000 * 60 * 60 * 24);//格式轉換
alert(days);
}
//獲得上月開始時間
function getLastMonthStartDate(){
var lastMonthStartDate = new Date(nowYear, lastMonth, 1);
return formatDate(lastMonthStartDate);
}
//獲得上月結束時間
function getLastMonthEndDate(){
var lastMonthEndDate = new Date(nowYear, lastMonth, getMonthDays(lastMonth));
return formatDate(lastMonthEndDate);
}
//獲得本季度的開始日期
function getQuarterStartDate(){
var quarterStartDate = new Date(nowYear, getQuarterStartMonth(), 1);
return formatDate(quarterStartDate);
}
//或的本季度的結束日期
function getQuarterEndDate(){
var quarterEndMonth = getQuarterStartMonth() + 2;
var quarterStartDate = new Date(nowYear, quarterEndMonth, getMonthDays(quarterEndMonth));
return formatDate(quarterStartDate);
}
//獲取本年開始-當前時間
var currentYear=now.getFullYear();//獲得當前年份4位年
var currentYearFirstDate=new Date(currentYear,0,1); //本年第一天
var startTime = currentYearFirstDate.getFullYear() + '-' + (currentYearFirstDate.getMonth() +1) + '-' + currentYearFirstDate.getDate()+''+currentYearFirstDate.getHours()+':'+currentYearFirstDate.getMinutes()+':'+
currentYearFirstDate.getSeconds(); //格式化本年第一天日期
var currentYearEndDate=now; //當前時間