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');
这就是现在确定季度的方式