js与date有关方法2(获取本周,本月,本季度,本年,上月,上周,上季度,去年)

转载必须在文章第一行注明来源地址:  http://blog.csdn.net/yhc13429826359/article/details/8085641


[javascript]  view plain  copy
  1. /** 
  2.  * 针对Ext的工具类 
  3.  */  
  4. var MrYangUtil=function(){  
  5.     /*** 
  6.      * 获得当前时间 
  7.      */  
  8.     this.getCurrentDate=function(){  
  9.         return new Date();  
  10.     };  
  11.     /*** 
  12.      * 获得本周起止时间 
  13.      */  
  14.     this.getCurrentWeek=function(){  
  15.         //起止日期数组  
  16.         var startStop=new Array();  
  17.         //获取当前时间  
  18.         var currentDate=this.getCurrentDate();  
  19.         //返回date是一周中的某一天  
  20.         var week=currentDate.getDay();  
  21.         //返回date是一个月中的某一天  
  22.         var month=currentDate.getDate();  
  23.       
  24.         //一天的毫秒数  
  25.         var millisecond=1000*60*60*24;  
  26.         //减去的天数  
  27.         var minusDay=week!=0?week-1:6;  
  28.         //alert(minusDay);  
  29.         //本周 周一  
  30.         var monday=new Date(currentDate.getTime()-(minusDay*millisecond));  
  31.         //本周 周日  
  32.         var sunday=new Date(monday.getTime()+(6*millisecond));  
  33.         //添加本周时间  
  34.         startStop.push(monday);//本周起始时间  
  35.         //添加本周最后一天时间  
  36.         startStop.push(sunday);//本周终止时间  
  37.         //返回  
  38.         return startStop;  
  39.     };  
  40.       
  41.     /*** 
  42.      * 获得本月的起止时间 
  43.      */  
  44.     this.getCurrentMonth=function(){  
  45.         //起止日期数组  
  46.         var startStop=new Array();  
  47.         //获取当前时间  
  48.         var currentDate=this.getCurrentDate();  
  49.         //获得当前月份0-11  
  50.         var currentMonth=currentDate.getMonth();  
  51.         //获得当前年份4位年  
  52.         var currentYear=currentDate.getFullYear();  
  53.         //求出本月第一天  
  54.         var firstDay=new Date(currentYear,currentMonth,1);  
  55.           
  56.   
  57.         //当为12月的时候年份需要加1  
  58.         //月份需要更新为0 也就是下一年的第一个月  
  59.         if(currentMonth==11){  
  60.             currentYear++;  
  61.             currentMonth=0;//就为  
  62.         }else{  
  63.             //否则只是月份增加,以便求的下一月的第一天  
  64.             currentMonth++;  
  65.         }  
  66.      
  67.           
  68.         //一天的毫秒数  
  69.         var millisecond=1000*60*60*24;  
  70.         //下月的第一天  
  71.         var nextMonthDayOne=new Date(currentYear,currentMonth,1);  
  72.         //求出上月的最后一天  
  73.         var lastDay=new Date(nextMonthDayOne.getTime()-millisecond);  
  74.           
  75.         //添加至数组中返回  
  76.         startStop.push(firstDay);  
  77.         startStop.push(lastDay);  
  78.         //返回  
  79.         return startStop;  
  80.     };  
  81.       
  82.     /** 
  83.      * 得到本季度开始的月份 
  84.      * @param month 需要计算的月份 
  85.      ***/  
  86.     this.getQuarterSeasonStartMonth=function(month){  
  87.         var quarterMonthStart=0;  
  88.         var spring=0; //春  
  89.         var summer=3; //夏  
  90.         var fall=6;   //秋  
  91.         var winter=9;//冬  
  92.         //月份从0-11  
  93.         if(month<3){  
  94.             return spring;  
  95.         }  
  96.           
  97.         if(month<6){  
  98.             return summer;  
  99.         }  
  100.           
  101.         if(month<9){  
  102.             return fall;  
  103.         }  
  104.           
  105.         return winter;  
  106.     };  
  107.       
  108.     /** 
  109.      * 获得该月的天数 
  110.      * @param year年份 
  111.      * @param month月份 
  112.      * */  
  113.     this.getMonthDays=function(year,month){  
  114.         //本月第一天 1-31  
  115.         var relativeDate=new Date(year,month,1);  
  116.         //获得当前月份0-11  
  117.         var relativeMonth=relativeDate.getMonth();  
  118.         //获得当前年份4位年  
  119.         var relativeYear=relativeDate.getFullYear();  
  120.           
  121.         //当为12月的时候年份需要加1  
  122.         //月份需要更新为0 也就是下一年的第一个月  
  123.         if(relativeMonth==11){  
  124.             relativeYear++;  
  125.             relativeMonth=0;  
  126.         }else{  
  127.             //否则只是月份增加,以便求的下一月的第一天  
  128.             relativeMonth++;  
  129.         }  
  130.         //一天的毫秒数  
  131.         var millisecond=1000*60*60*24;  
  132.         //下月的第一天  
  133.         var nextMonthDayOne=new Date(relativeYear,relativeMonth,1);  
  134.         //返回得到上月的最后一天,也就是本月总天数  
  135.         return new Date(nextMonthDayOne.getTime()-millisecond).getDate();  
  136.     };  
  137.       
  138.     /** 
  139.      * 获得本季度的起止日期 
  140.      */  
  141.     this.getCurrentSeason=function(){  
  142.         //起止日期数组  
  143.         var startStop=new Array();  
  144.         //获取当前时间  
  145.         var currentDate=this.getCurrentDate();  
  146.         //获得当前月份0-11  
  147.         var currentMonth=currentDate.getMonth();  
  148.         //获得当前年份4位年  
  149.         var currentYear=currentDate.getFullYear();  
  150.         //获得本季度开始月份  
  151.         var quarterSeasonStartMonth=this.getQuarterSeasonStartMonth(currentMonth);  
  152.         //获得本季度结束月份  
  153.         var quarterSeasonEndMonth=quarterSeasonStartMonth+2;  
  154.           
  155.         //获得本季度开始的日期  
  156.         var quarterSeasonStartDate=new Date(currentYear,quarterSeasonStartMonth,1);  
  157.         //获得本季度结束的日期  
  158.         var quarterSeasonEndDate=new Date(currentYear,quarterSeasonEndMonth,this.getMonthDays(currentYear, quarterSeasonEndMonth));  
  159.         //加入数组返回  
  160.         startStop.push(quarterSeasonStartDate);  
  161.         startStop.push(quarterSeasonEndDate);  
  162.         //返回  
  163.         return startStop;  
  164.     };  
  165.       
  166.     /*** 
  167.      * 得到本年的起止日期 
  168.      *  
  169.      */  
  170.     this.getCurrentYear=function(){  
  171.         //起止日期数组  
  172.         var startStop=new Array();  
  173.         //获取当前时间  
  174.         var currentDate=this.getCurrentDate();  
  175.         //获得当前年份4位年  
  176.         var currentYear=currentDate.getFullYear();  
  177.           
  178.         //本年第一天  
  179.         var currentYearFirstDate=new Date(currentYear,0,1);  
  180.         //本年最后一天  
  181.         var currentYearLastDate=new Date(currentYear,11,31);  
  182.         //添加至数组  
  183.         startStop.push(currentYearFirstDate);  
  184.         startStop.push(currentYearLastDate);  
  185.         //返回  
  186.         return startStop;  
  187.     };  
  188.       
  189.     /** 
  190.      * 返回上一个月的第一天Date类型 
  191.      * @param year 年 
  192.      * @param month 月 
  193.      **/  
  194.     this.getPriorMonthFirstDay=function(year,month){  
  195.         //年份为0代表,是本年的第一月,所以不能减  
  196.         if(month==0){  
  197.             month=11;//月份为上年的最后月份  
  198.             year--;//年份减1  
  199.             return new Date(year,month,1);  
  200.         }  
  201.         //否则,只减去月份  
  202.         month--;  
  203.         return new Date(year,month,1);;  
  204.     };  
  205.       
  206.     /** 
  207.      * 获得上一月的起止日期 
  208.      * ***/  
  209.     this.getPreviousMonth=function(){  
  210.         //起止日期数组  
  211.         var startStop=new Array();  
  212.         //获取当前时间  
  213.         var currentDate=this.getCurrentDate();  
  214.         //获得当前月份0-11  
  215.         var currentMonth=currentDate.getMonth();  
  216.         //获得当前年份4位年  
  217.         var currentYear=currentDate.getFullYear();  
  218.         //获得上一个月的第一天  
  219.         var priorMonthFirstDay=this.getPriorMonthFirstDay(currentYear,currentMonth);  
  220.         //获得上一月的最后一天  
  221.         var priorMonthLastDay=new Date(priorMonthFirstDay.getFullYear(),priorMonthFirstDay.getMonth(),this.getMonthDays(priorMonthFirstDay.getFullYear(), priorMonthFirstDay.getMonth()));  
  222.         //添加至数组  
  223.         startStop.push(priorMonthFirstDay);  
  224.         startStop.push(priorMonthLastDay);  
  225.         //返回  
  226.         return startStop;  
  227.     };  
  228.       
  229.       
  230.     /** 
  231.      * 获得上一周的起止日期 
  232.      * **/  
  233.     this.getPreviousWeek=function(){  
  234.         //起止日期数组  
  235.         var startStop=new Array();  
  236.         //获取当前时间  
  237.         var currentDate=this.getCurrentDate();  
  238.         //返回date是一周中的某一天  
  239.         var week=currentDate.getDay();  
  240.         //返回date是一个月中的某一天  
  241.         var month=currentDate.getDate();  
  242.         //一天的毫秒数  
  243.         var millisecond=1000*60*60*24;  
  244.         //减去的天数  
  245.         var minusDay=week!=0?week-1:6;  
  246.         //获得当前周的第一天  
  247.         var currentWeekDayOne=new Date(currentDate.getTime()-(millisecond*minusDay));  
  248.         //上周最后一天即本周开始的前一天  
  249.         var priorWeekLastDay=new Date(currentWeekDayOne.getTime()-millisecond);  
  250.         //上周的第一天  
  251.         var priorWeekFirstDay=new Date(priorWeekLastDay.getTime()-(millisecond*6));  
  252.           
  253.         //添加至数组  
  254.         startStop.push(priorWeekFirstDay);  
  255.         startStop.push(priorWeekLastDay);  
  256.           
  257.         return startStop;  
  258.     };  
  259.       
  260.     /** 
  261.      * 得到上季度的起始日期 
  262.      * year 这个年应该是运算后得到的当前本季度的年份 
  263.      * month 这个应该是运算后得到的当前季度的开始月份 
  264.      * */  
  265.     this.getPriorSeasonFirstDay=function(year,month){  
  266.         var quarterMonthStart=0;  
  267.         var spring=0; //春  
  268.         var summer=3; //夏  
  269.         var fall=6;   //秋  
  270.         var winter=9;//冬  
  271.         //月份从0-11  
  272.         switch(month){//季度的其实月份  
  273.         case spring:  
  274.             //如果是第一季度则应该到去年的冬季  
  275.               year--;  
  276.               month=winter;  
  277.             break;  
  278.         case summer:  
  279.             month=spring;  
  280.             break;  
  281.         case fall:  
  282.             month=summer;  
  283.             break;  
  284.         case winter:  
  285.             month=fall;  
  286.             break;  
  287.               
  288.         };  
  289.           
  290.         return new Date(year,month,1);  
  291.     };  
  292.       
  293.     /** 
  294.      * 得到上季度的起止日期 
  295.      * **/  
  296.     this.getPreviousSeason=function(){  
  297.         //起止日期数组  
  298.         var startStop=new Array();  
  299.         //获取当前时间  
  300.         var currentDate=this.getCurrentDate();  
  301.         //获得当前月份0-11  
  302.         var currentMonth=currentDate.getMonth();  
  303.         //获得当前年份4位年  
  304.         var currentYear=currentDate.getFullYear();  
  305.         //上季度的第一天  
  306.         var priorSeasonFirstDay=this.getPriorSeasonFirstDay(currentYear, currentMonth);  
  307.         //上季度的最后一天  
  308.         var priorSeasonLastDay=new Date(priorSeasonFirstDay.getFullYear(),priorSeasonFirstDay.getMonth()+2,this.getMonthDays(priorSeasonFirstDay.getFullYear(), priorSeasonFirstDay.getMonth()+2));  
  309.         //添加至数组  
  310.         startStop.push(priorSeasonFirstDay);  
  311.         startStop.push(priorSeasonLastDay);  
  312.         return startStop;  
  313.     };  
  314.       
  315.     /** 
  316.      * 得到去年的起止日期 
  317.      * **/  
  318.     this.getPreviousYear=function(){  
  319.         //起止日期数组  
  320.         var startStop=new Array();  
  321.         //获取当前时间  
  322.         var currentDate=this.getCurrentDate();  
  323.         //获得当前年份4位年  
  324.         var currentYear=currentDate.getFullYear();  
  325.             currentYear--;  
  326.         var priorYearFirstDay=new Date(currentYear,0,1);  
  327.         var priorYearLastDay=new Date(currentYear,11,1);  
  328.         //添加至数组  
  329.         startStop.push(priorYearFirstDay);  
  330.         startStop.push(priorYearLastDay);  
  331.         return startStop;  
  332.     };  
  333.       
  334.       
  335.       
  336.       
  337.       
  338. };  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值