javascript +定义每个季度的日期

时间:2017-04-10 05:54:08

标签: javascript

我在名为Quarter的页面上有一个下拉列表,其中包含以下值 -

Quarter 1
Quarter 2
Quarter 3
Quarter 4

此外,我还有另一个名为Year with Year值的字段 - 2015,2016,2-17,2-18,2019,2020

我想在我的javascript代码中定义每个季度的值,例如

if(quarter = "quarter 1")
{
  startdate = 2017-01-01;enddate = 2017-01-31
}

其他季度也是如此。

我想问一下是否有内置功能来获取每个季度的startdate和enddate,我会将年份字段值附加到它。因此它不会保持静态。

任何帮助都将不胜感激。

先谢谢

3 个答案:

答案 0 :(得分:0)

  

我想问一下是否有内置功能来获取每个季度的startdate和enddate,我会将年份字段值附加到它。

这些是常数。以你在Q1的例子为例,你谈论的是一年中的正常日历季度。 Q1于01/01开始,于3月31日结束,Q2于01/04开始,于06/06等结束。由于没有季度在2月的最后一天开始或结束,因此这不是移动目标。

不,没有内置功能,但您不需要任何内置功能。只需从那些恒定的月和日值以及您需要的年份构建日期。

var q1 = {
    start: new Date(2017, 0, 1),    // Remember, January = 0 here
    end:   new Date(2017, 2, 31)
};
// ...

或者对于UTC:

var q1 = {
    start: new Date(Date.UTC(2017, 0, 1)),
    end:   new Date(Date.UTC(2017, 2, 31))
};
// ...

答案 1 :(得分:0)

许多国家/地区的财政年度的季度从4月1日开始,所以我认为您需要先设置quarter 1的开头。

让我们说

var startDate = new Date();
date.setMonth(2);
date.setDate(1);

然后你可以拥有像

这样的功能
function addQuarter(date) 
{ 
   date.setMonth( date.getMonth() + 3 ); 
   return date; 
}

例如

addQuarter(date); //returns Thu Jun 01 2017

与获得季度的最后日期类似

function lastDateOfQuarter( date )
{
  date.setMonth( date.getMonth() + 3 ); 
  date.setDate( date.getDate() - 1);
  return date;
}

您可以根据展示要求格式化日期

function formatDate( date )
{
  return date.getDate() + "-" + ( date.getMonth() + 1 ) + "-" + date.getFullYear();
}

答案 2 :(得分:-1)

//if you are using current year 
var todayDate=new Date();

var startMonth=todayDate.getMonth();
var startDay=1;

var endMonth=todayDate.getMonth();
var endtDay=31;

switch(quarterValue){
  case "Q1" : startMonth=0;endMonth=2;
  case "Q2" : startMonth=3;endMonth=5;
  case "Q3" : startMonth=6;endMonth=8;
  case "Q4" : startMonth=9;endMonth=11;

}

todayDate.setMonth(startMonth);
todayDate.setDate(startDay);

var startDate=todayDate;

todayDate.setMonth(endMonth);
todayDate.setDate(endDay);

var endDate=todayDate;