js获得本周,本月,本季度的开始日期和结束日期

本文介绍了一种使用JavaScript进行日期和时间格式化的实用方法,并提供了获取特定时间范围(如天、周、月、季度和年)起始与结束时间的具体实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Java代码  收藏代码
  1. <script>     
  2. var now = new Date();                    //当前日期     
  3. var nowDayOfWeek = now.getDay();         //今天本周的第几天     
  4. var nowDay = now.getDate();              //当前日     
  5. var nowMonth = now.getMonth();           //当前月     
  6. var nowYear = now.getYear();             //当前年     
  7. nowYear += (nowYear < 2000) ? 1900 : 0;  //     
  8.     
  9. //格式化日期:yyyy-MM-dd     
  10. function formatDate(date) {      
  11.     var myyear = date.getFullYear();     
  12.     var mymonth = date.getMonth()+1;     
  13.     var myweekday = date.getDate();   
  14.     if(mymonth < 10){     
  15.         mymonth = "0" + mymonth;     
  16.     }      
  17.     if(myweekday < 10){     
  18.         myweekday = "0" + myweekday;     
  19.     }     
  20.    // return (myyear+"-"+mymonth + "-" + myweekday);      
  21.       
  22.     //格式化日期:yyyy-MM-dd HH:MM:SS  
  23.     var myHour = date.getHours();      
  24.     var myMinute = date.getMinutes();      
  25.     var mySecond = date.getSeconds();      
  26.     if(myHour < 10){     
  27.         myHour = "0" + myHour;     
  28.     }      
  29.     if(myMinute < 10){     
  30.         myMinute = "0" + myMinute;     
  31.     }         
  32.     if(mySecond < 10){     
  33.         mySecond = "0" + mySecond;     
  34.     }         
  35.     return (myyear+"-"+mymonth + "-" + myweekday+" "+myHour+":"+myMinute+":"+mySecond);      
  36. }      
  37.     
  38. //获得某月的天数     
  39. function getMonthDays(myMonth){     
  40.     var monthStartDate = new Date(nowYear, myMonth, 1);      
  41.     var monthEndDate = new Date(nowYear, myMonth + 11);      
  42.     var   days   =   (monthEndDate   -   monthStartDate)/(1000   *   60   *   60   *   24);      
  43.     return   days;      
  44. }     
  45.     
  46. //获得本季度的开始月份     
  47. function getQuarterStartMonth(){     
  48.     var quarterStartMonth = 0;     
  49.     if(nowMonth<3){     
  50.        quarterStartMonth = 0;     
  51.     }     
  52.     if(2<nowMonth && nowMonth<6){     
  53.        quarterStartMonth = 3;     
  54.     }     
  55.     if(5<nowMonth && nowMonth<9){     
  56.        quarterStartMonth = 6;     
  57.     }     
  58.     if(nowMonth>8){     
  59.        quarterStartMonth = 9;     
  60.     }     
  61.     return quarterStartMonth;     
  62. }     
  63.   
  64.  //获得本天(i=0)的开始时间     
  65. function getDayStartDate(i) {      
  66.     var nowStartDay = new Date(nowYear, nowMonth, nowDay+i);      
  67.     return formatDate(nowStartDay);     
  68. }    
  69.     
  70. //获得本天(i=0)的结束时间     
  71. function getDayEndDate(i) {      
  72.     var nowStartDay = new Date(nowYear, nowMonth, nowDay+i,23,59,59);      
  73.     return formatDate(nowStartDay);     
  74. }  
  75.   
  76.  //获得本周(i=0)的开始日期     
  77. function getWeekStartDate(i) {      
  78.     //var weekStartDate = new Date(nowYear, nowMonth, nowDay - nowDayOfWeek);      
  79.     var weekStartDate = new Date(nowYear, nowMonth, nowDay - nowDayOfWeek+7*i);      
  80.     return formatDate(weekStartDate);     
  81. }      
  82.     
  83. //获得本周的结束日期     
  84. function getWeekEndDate(i) {      
  85.    // var weekEndDate = new Date(nowYear, nowMonth, nowDay + (6 - nowDayOfWeek));      
  86.     var weekEndDate = new Date(nowYear, nowMonth, nowDay + (6 - nowDayOfWeek)+7*i,23,59,59);      
  87.     return formatDate(weekEndDate);     
  88. }      
  89.     
  90. //获得本月的开始日期     
  91. function getMonthStartDate(i){     
  92.     //var monthStartDate = new Date(nowYear, nowMonth, 1);      
  93.     var monthStartDate = new Date(nowYear, nowMonth+i, 1);      
  94.     return formatDate(monthStartDate);     
  95. }     
  96.     
  97. //获得本月的结束日期     
  98. function getMonthEndDate(i){     
  99.     //var monthEndDate = new Date(nowYear, nowMonth, getMonthDays(nowMonth));      
  100.     var monthEndDate = new Date(nowYear, nowMonth+i, getMonthDays(nowMonth+i,),23,59,59);      
  101.     return formatDate(monthEndDate);     
  102. }     
  103.     
  104. //获得本季度的开始日期     
  105. function getQuarterStartDate(i){     
  106.     //var quarterStartDate = new Date(nowYear, getQuarterStartMonth(), 1);      
  107.     var quarterStartDate = new Date(nowYear, getQuarterStartMonth()+3*i, 1);      
  108.     return formatDate(quarterStartDate);     
  109. }     
  110.     
  111. //或的本季度的结束日期     
  112. function getQuarterEndDate(i){     
  113.     var quarterEndMonth = getQuarterStartMonth()+3*i + 2;     
  114.     //var quarterStartDate = new Date(nowYear, quarterEndMonth, getMonthDays(quarterEndMonth));      
  115.     var quarterStartDate = new Date(nowYear, quarterEndMonth, getMonthDays(quarterEndMonth),23,59,59);      
  116.     return formatDate(quarterStartDate);     
  117. }     
  118.     
  119. //获得本年度的开始日期     
  120. function getYearStartDate(i){     
  121.     var quarterStartDate = new Date(nowYear+i, 01);      
  122.     return formatDate(quarterStartDate);     
  123. }    
  124.   
  125. //获得本年度的结束日期     
  126. function getYearEndDate(i){     
  127.     var quarterStartDate = new Date(nowYear+i, 11, getMonthDays(11),23,59,59);      
  128.     return formatDate(quarterStartDate);     
  129. }    
  130.   
  131. alert(getMonthStartDate(1));     
  132. </script>  
Day.js是一个轻量级的时间处理库,它提供了一个易于使用的API来处理日期时间。如果你想获取当前季度上一季度的开始日期结束日期,你可以按照以下步骤操作: 1. 首先,导入Day.js库: ```javascript const dayjs = require('dayjs'); ``` 2. 获取当前日期: ```javascript const currentDate = dayjs(); ``` 3. 确定当前季度。在中国大陆,通常将一年分为四个季度,第一季度是从1月1日到3月31日,第二季度从4月1日到6月30日,第三季度从7月1日到9月30日,第四季度从10月1日到12月31日。你可以通过计算月份来确定季度: ```javascript function getQuarter(date) { return Math.floor((date.month() + 3) / 3); } const currentQuarter = getQuarter(currentDate); ``` 4. 计算上一季度的开始结束日期。假设我们当前是在第n季度: - 如果是第一季,上一季度就是第四季(12月到次年3月),所以你需要找到前一年的12月1日作为起始日期; - 结束日期则是上一季度的最后一天,即(n-1)* 3个月后的最后一天。 以下是计算上一季度日期的例子: ```javascript function getLastDayOfQuarter(year, quarter) { const monthsInQuarter = quarter * 3; const lastMonth = (monthsInQuarter === 12) ? 12 : monthsInQuarter; const lastDayOfMonth = new Date(year, lastMonth - 1, 0).getDate(); return dayjs(`${year}-${lastMonth}-${lastDayOfMonth}`); } const startOfPreviousQuarter = dayjs().subtract({ quarters: currentQuarter - 1 }, 'quarter').startOf('month'); const endOfPreviousQuarter = getLastDayOfQuarter(startOfPreviousQuarter.year(), currentQuarter - 1); // 输出结果 console.log(`当前季度:${currentQuarter},起始日期:${startOfPreviousQuarter.format('YYYY-MM-DD')}, 结束日期:${endOfPreviousQuarter.format('YYYY-MM-DD')}`); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值