如何使用Moment.js根据Unix时间戳确定财务季度?

时间:2016-08-31 04:22:29

标签: javascript momentjs unix-timestamp

我的目标是比较代表财务季度的两个数据集。 API的怪癖需要每个获取请求两个日期:startDate(包括)和endDate(不包括)。因此,例如,要获取2016年7月的数据,您需要:

startDate = 20160701和endDate = 20160801。

给定一个unixStartDate(这是一个Unix时间戳),我想找到(1)当前季度的startDateendDate,以及(2){{上一季度1}}和startDate

到目前为止,我可以使用moment.js确定当前季度没有问题:
endDate
我可能会根据这些信息制作一个hacky switch-case,但我希望能有一个更优雅的解决方案。

Moment.js还包含const currentQuarter = moment.unix(unixStartDate).utc().quarter();,但我一直无法弄清楚它的正确用法。 Console.log产生一个对象:

moment().startOf('quarter')

1 个答案:

答案 0 :(得分:2)

这是一个冗长的版本:

const moment = require('moment');

let unixStartDate  = ...;

let current        = moment(unixStartDate);
let currentStartOf = moment(current).startOf('quarter');
let currentEndOf   = moment(current).  endOf('quarter').add(1, 'day');

let previous        = moment(current).subtract(1, 'quarter');
let previousStartOf = moment(previous).startOf('quarter');
let previousEndOf   = moment(previous).  endOf('quarter').add(1, 'day');

console.log(
  'current ', 
  currentStartOf.format('YYYYMMDD'),
  currentEndOf  .format('YYYYMMDD')
)

console.log(
  'previous', 
  previousStartOf.format('YYYYMMDD'),
  previousEndOf  .format('YYYYMMDD')
)