如何使用 Moment.js 根据 Unix 时间戳确定财务季度?
How to use Moment.js to determine financial quarters based upon Unix timestamp?
我的目标是比较代表财务季度的两个数据集。 API 的怪癖要求每个 get 请求有两个日期:startDate
(含)和 endDate
(不含)。因此,例如,要获取 2016 年 7 月的数据,您需要:
startDate
= 20160701 和 endDate
= 20160801。
给定一个 unixStartDate
(这是一个 Unix 时间戳),我想找到 (1) 当前季度的 startDate
和 endDate
,以及 (2)上一季度 startDate
和 endDate
。
到目前为止,我可以使用 moment.js 毫无问题地确定当前季度:
const currentQuarter = moment.unix(unixStartDate).utc().quarter();
我可能会根据这些信息制作一个 hacky switch-case,但我希望有一个更优雅的解决方案。
Moment.js 也包含 moment().startOf('quarter')
,但我一直无法弄清楚它的正确用法。 Console.log 产生一个对象:
Moment {_isAMomentObject: true,
_isUTC: false,
_pf: Object,
_locale: Locale,
_d: Fri Jul 01 2016 00:00:00 GMT-1000 (HST)…}
这是一个详细的版本:
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')
)
我的目标是比较代表财务季度的两个数据集。 API 的怪癖要求每个 get 请求有两个日期:startDate
(含)和 endDate
(不含)。因此,例如,要获取 2016 年 7 月的数据,您需要:
startDate
= 20160701 和 endDate
= 20160801。
给定一个 unixStartDate
(这是一个 Unix 时间戳),我想找到 (1) 当前季度的 startDate
和 endDate
,以及 (2)上一季度 startDate
和 endDate
。
到目前为止,我可以使用 moment.js 毫无问题地确定当前季度:
const currentQuarter = moment.unix(unixStartDate).utc().quarter();
我可能会根据这些信息制作一个 hacky switch-case,但我希望有一个更优雅的解决方案。
Moment.js 也包含 moment().startOf('quarter')
,但我一直无法弄清楚它的正确用法。 Console.log 产生一个对象:
Moment {_isAMomentObject: true,
_isUTC: false,
_pf: Object,
_locale: Locale,
_d: Fri Jul 01 2016 00:00:00 GMT-1000 (HST)…}
这是一个详细的版本:
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')
)