簡體   English   中英

如何使用節點js中的moment.js根據當前日期生成一年的季度數和年份數數組?

[英]How to generate an array of quarter numbers of a year along with year number based on current date using moment.js in node js?

我想使用節點 js 中的當前時間戳創建一個季度數和年份數的數組。 例如,當前季度是 Q1,年份是 2020。現在,我想創建一個如下所示的數組。

quarters = ['Q2-2019','Q3-2019','Q4-2019','Q1-2020']

在上面的數組中, Q12020 ,其余 3 個是2019基本上我的要求是創建季度數組,包括當前季度數和過去 3 個季度數以及年份數。

現在,通過使用@Santhosh S 給出的以下代碼,我得到了一個類似['Q2','Q3','Q4','Q1']的數組。代碼是,

let quarters = [ 0, 1, 2, 3 ].map(i => 
  moment().subtract(i, 'Q').format('[Q]Q')
);

console.log(quarters);

反正有生成這個數組嗎?

您可以獲得實際月份並為下一個季度和季度計數添加一個,並獲得剩余的四個以映射季度。

 var month = new Date().getMonth(), quarters = ['Q1', 'Q2', 'Q3', 'Q4'].map((_, i, a) => a[Math.floor(month / 3 + 1 + i) % 4]); console.log(quarters);

使用moment.js

const moment = require('moment');
let out = Array(4).fill().map((_, i) => 'Q' + moment().subtract(9-(3*i), 'months').quarter())
console.log(out)

使用moment().quarter(); 獲取當前季度。

編輯:使用減法和格式到四分之一。 下面的示例代碼

 let format = '[Q]Q'; let quarters = [ moment().format(format), moment().subtract(1, 'Q').format(format), moment().subtract(2, 'Q').format(format), moment().subtract(3, 'Q').format(format) ]; console.log(quarters);
 <script src="https://momentjs.com/downloads/moment.min.js"></script>

或者更簡潔的版本:

 let quarters = [ 0, 1, 2, 3 ].map(i => moment().subtract(i, 'Q').format('[Q]Q') ); console.log(quarters);
 <script src="https://momentjs.com/downloads/moment.min.js"></script>

請查看 MomentJs Quarters:這里

moment().quarter(Number); 基於當天並創建您的 Q 數組。

嘗試以下

function getQuarter(date) {
  // `getMonth` returns an int from 0 to 11.
  return Math.floor(date.getMonth() / 3) + 1;
}

function buildQuartersList(currentQuarter) {
  // `fill` is needed, otherwise, `map` won't run.
  const quartersList = new Array(4).fill().map((element, index) => {
    const quarter = ((index + currentQuarter - 1) % 4) + 1;
    return `Q${quarter}`;
  });
  return quartersList.reverse();
}

function getQuartersList(date) {
  const currentQuarter = getQuarter(date);
  return buildQuartersList(currentQuarter);
}

console.log(getQuartersList(new Date()));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM