半年日期格式

Half year date format

我想获取 ex 的半年日期格式: 如果我有日期 2020-01-01,日期格式必须为 H1,对于 2020-08-01,日期格式必须为 H2 我已经通过以下方式实现了 ex: 2020-01-01 -> Q1 和 2020-04-01 -> Q2 的季度日期格式

const baseDateM = moment(`${year}-${month}-01`, 'YYYY-MMM-DD');
var periodAsDatesM = []; // using var
var dateFormat;
dateFormat = '[Q]Q';
periodAsDatesM = [
          baseDateM,
          baseDateM.clone().subtract(1, 'quarters'),
          baseDateM.clone().subtract(2, 'quarters'),
          baseDateM.clone().subtract(3, 'quarters'),
          baseDateM.clone().add(1, 'quarters'),
          baseDateM.clone().add(2, 'quarters'),
 ];
let yearsArray = _.uniq(periodAsDatesM.map(dtM => dtM.format('YYYY')));
const myPeriodArr = periodAsDatesM.map(dtM => dtM.format(dateFormat));

此处 myPeriodArr 包含基于日期的 [Q1,Q2], 但是现在,当我每半年遵循一次时 myPeriodArr 包含 [H0,H0],与日期无关。 我尝试了半年以下。

dateFormat = '[H]H';
        periodAsDatesM = [
          baseDateM,
          baseDateM.clone().subtract(6, 'months'),
          baseDateM.clone().subtract(12, 'months'),
          baseDateM.clone().subtract(18, 'months'),
          baseDateM.clone().add(6, 'months'),
          baseDateM.clone().add(12, 'months'),
        ];
let yearsArray = _.uniq(periodAsDatesM.map(dtM => dtM.format('YYYY')));
const myPeriodArr = periodAsDatesM.map(dtM => dtM.format(dateFormat));

我想获取H1和H2的日期格式 前任: 如果 periodAsDatesM 包含:[2018-12-01,2019-06-01,2019-12-01,2020-06-01] 那么 myPeriodArr 应该是:[H2,H1,H2,H1]

根据您问题的标签,您似乎在使用 momentjs。 There's an issue about this in the momentjs GitHub project.

改编自a comment there

const halfFormatted = `H${moment(new Date()).get('quarter') < 3 ? 1 : 2}`

console.log(halfFormatted)
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment.min.js"></script>

const halfFormat = `H${date.get('quarter') < 3) ? 1 : 2}`