var now = new Date(); //當前日期
var nowDayOfWeek = (now.getDay() == 0) ? 7 : now.getDay() - 1; //今天是本周的第幾天。周一=0,周日=6
var nowDay = now.getDate(); //當前日
var nowMonth = now.getMonth(); //當前月值(1月=0,12月=11)
var nowMonReal = now.getMonth() + 1; //當前月實際數字
var nowYear = now.getFullYear(); //當前年
//日期+天
function AddDays(d, n) {
var t = new Date(d);//復制並操作新對象,避免改動原對象
t.setDate(t.getDate() + n);
return t;
}
//日期+月。日對日,若目標月份不存在該日期,則置為最后一日
function AddMonths(d, n) {
var t = new Date(d);
t.setMonth(t.getMonth() + n);
if (t.getDate() != d.getDate()) { t.setDate(0); }
return t;
}
//日期+年。月對月日對日,若目標年月不存在該日期,則置為最后一日
function AddYears(d, n) {
var t = new Date(d);
t.setFullYear(t.getFullYear() + n);
if (t.getDate() != d.getDate()) { t.setDate(0); }
return t;
}
//獲得本季度的開始月份
function getQuarterStartMonth() {
if (nowMonth <= 2) { return 0; }
else if (nowMonth <= 5) { return 3; }
else if (nowMonth <= 8) { return 6; }
else { return 9; }
}
//周一
function getWeekStartDate() {
return AddDays(now, -nowDayOfWeek);
}
//周日。本周一+6天
function getWeekEndDate() {
return AddDays(getWeekStartDate(), 6);
}
//月初
function getMonthStartDate() {
return new Date(nowYear, nowMonth, 1);
}
//月末。下月初-1天
function getMonthEndDate() {
return AddDays(AddMonths(getMonthStartDate(), 1), -1);
}
//季度初
function getQuarterStartDate() {
return new Date(nowYear, getQuarterStartMonth(), 1);
}
//季度末。下季初-1天
function getQuarterEndDate() {
return AddDays(AddMonths(getQuarterStartDate(), 3), -1);
}