Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在Moment.js中,您如何获得当前的财务季度?_Javascript_Date_Momentjs - Fatal编程技术网

Javascript 在Moment.js中,您如何获得当前的财务季度?

Javascript 在Moment.js中,您如何获得当前的财务季度?,javascript,date,momentjs,Javascript,Date,Momentjs,是否有一种简单/内置的方法来计算当前的财务季度 例: 一月至三月一日 四月至七月:第二 七月至九月三日 10-12月4日 现在没有内置任何东西,但有一个对话可以为季度添加格式化标记 同时,您可以使用如下内容 Math.floor(moment().month() / 3) + 1; 或者,如果你想要即时原型,就这样做 moment.fn.quarter = function () { return Math.floor(this.month() / 3) + 1; } 似乎对我有效

是否有一种简单/内置的方法来计算当前的财务季度

例:

  • 一月至三月一日
  • 四月至七月:第二
  • 七月至九月三日
  • 10-12月4日

现在没有内置任何东西,但有一个对话可以为季度添加格式化标记

同时,您可以使用如下内容

Math.floor(moment().month() / 3) + 1;
或者,如果你想要即时原型,就这样做

moment.fn.quarter = function () {
    return Math.floor(this.month() / 3) + 1;
}

似乎对我有效的公式是:

Math.ceil((moment().month() + 1) / 3);
moment().month()返回0-11个月的格式,因此我们必须添加一个

THE ACTUAL MONTH = (moment().month() + 1)
然后我们必须除以3,因为一个季度有3个月

HOW MANY QUARTERS PASSED = (THE ACTUAL MONTH) / 3
然后我们必须得到它的上限(四舍五入到最近的四分之一末端)

编辑:

该项目(尚未提交)为:


这意味着
Math.floor((this.month())/3)+1

最简单的方法是

Math.floor(moment.month() / 3)
这将为您提供以零为基础的季度指数。即0、1、2或3


然后,如果您想要季度的文字数字,只需添加一个即可。

使用此简单代码获取基于一月和四月的所有季度

代码:

 // startMonth should be january or april

  function setQuarter(startMonth) {
    var obj = {};
    if(startMonth=='january'){

        obj.quarter1 = {start:moment().month(0).startOf('month'),end:moment().month(2).endOf('month')}
        obj.quarter2 = {start:moment().month(3).startOf('month'),end:moment().month(5).endOf('month')}
        obj.quarter3 = {start:moment().month(6).startOf('month'),end:moment().month(8).endOf('month')}
        obj.quarter4 = {start:moment().month(9).startOf('month'),end:moment().month(11).endOf('month')}
        console.log(obj);
        return obj;
    }
    else if(startMonth=='april'){

        obj.quarter1 = {start:moment().month(3).startOf('month'),end:moment().month(5).endOf('month')}
        obj.quarter2 = {start:moment().month(6).startOf('month'),end:moment().month(8).endOf('month')}
        obj.quarter3 = {start:moment().month(9).startOf('month'),end:moment().month(11).endOf('month')}
        obj.quarter4 = {start:moment().month(0).startOf('month').add('years',1),end:moment().month(2).endOf('month').add('years',1)}
        console.log(obj);
        return obj;
    }
}

 setQuarter('april');

这一点现在得到了即时支持:

moment('2014-12-01').utc().quarter() //outputs 4
moment().quarter(); //outputs current quarter ie. 2

使用2.14.1+版,您可以执行以下操作:

moment().quarter()
返回当前的季度号:1、2、3、4

moment().quarter(moment().quarter()).startOf('quarter');
moment().quarter(moment().quarter()).startOf('quarter');
将返回日期设置为季度开始日期的当前季度

moment().quarter(moment().quarter()).startOf('quarter');
moment("2019", "YYYY").quarter(4).startOf('quarter');
将返回日期设置为“季度结束日期”的当前季度

moment("2019", "YYYY").quarter(4).endOf('quarter');
您还可以定义一个函数,该函数将相应的季度号作为参数(1,2,3,4),并返回一个包含季度开始和结束日期的对象

function getQuarterRange(quarter) {

  const start = moment().quarter(quarter).startOf('quarter');

  const end = moment().quarter(quarter).endOf('quarter');

  return {start, end};
}

我认为这些答案都不能解释如何获得财政季度。他们解释了如何获得日历季度

我没有一个明确的答案,因为这正是我来到这里的原因。但财政季度才是真正需要的。这是基于财政年度的开始月份

例如,如果我公司的财政起始月是2月。那么在2017年1月9日写作时,我实际上是在2016年第四季度

为了实现这一点,我们需要一种方法来获取相对于所提供的起始月份整数的季度

给出的答案是正确的,但在“四月”场景中有一个问题

问题:如果您的财政年度为4月,则前3个月为1月、2月和3月

obj.quarter1.start date returns, 1-April-CurrentYear [incorrect Value]
obj.quarter4.end date retunrs, 31-March-NextYear [incorrect Value]
正确的值应该是

Start = 1-April-PreviuosYear
End = 31-March-CurrentYear
所以,考虑到前3个月,它可以写成这样

    const obj = {};

/* 0-Jan, 1-Feb, 2-Mar */
    if (moment().month() <= 2) { 
        obj.quarter1 = { start: moment().month(3).startOf('month').add('years', -1), end: moment().month(5).endOf('month').add('years', -1) };
        obj.quarter2 = { start: moment().month(6).startOf('month').add('years', -1), end: moment().month(8).endOf('month').add('years', -1) };
        obj.quarter3 = { start: moment().month(9).startOf('month').add('years', -1), end: moment().month(11).endOf('month').add('years', -1) };
        obj.quarter4 = { start: moment().month(0).startOf('month'), end: moment().month(2).endOf('month') };    
    } else {
        obj.quarter1 = { start: moment().month(3).startOf('month'), end: moment().month(5).endOf('month') };
        obj.quarter2 = { start: moment().month(6).startOf('month'), end: moment().month(8).endOf('month') };
        obj.quarter3 = { start: moment().month(9).startOf('month'), end: moment().month(11).endOf('month') };
        obj.quarter4 = { start: moment().month(0).startOf('month').add('years', 1), end: moment().month(2).endOf('month').add('years', 1) };    
    }
    console.log(obj);
constobj={};
/*1月0日、2月1日、3月2日*/

如果(时间().month()开始日期

moment().quarter(moment().quarter()).endOf('quarter');
将返回日期设置为季度开始日期的当前季度

moment().quarter(moment().quarter()).startOf('quarter');
moment("2019", "YYYY").quarter(4).startOf('quarter');
将返回“2019”年第四季度的开始日期

将返回本年度当前季度的开始日期

结束日期

moment().quarter(moment().quarter()).endOf('quarter');
将返回日期设置为“季度结束日期”的当前季度

moment("2019", "YYYY").quarter(4).endOf('quarter');
将返回本年度第四季度的截止日期“2019年”


将返回本年当前季度的结束日期。

Hmm…根据我们现在在第三季度的情况:楼层(11/4)+1我正在查看,它使用了公式
return~((this.month())/3)+1;
。什么意思?编辑:Nvm发现是地板。啊,是的,那应该是
月/3
~
是一个按位NOT运算符,有时用来代替地板。对于那些想知道实际日期的人来说:从7月开始的一年的季度怎么样?令人惊讶的是,没有必要传递货币使用当前日期时输入季度号。换句话说,这两条语句是相同的:
矩().quarter(矩().quarter()).startOf('quarter');
矩().startOf('quarter');
这就是现在确定季度的方式