js日期計算及快速獲取周、月、季度起止日


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);
 }


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM