首页 > 解决方案 > 半年日期格式

问题描述

我想获得 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]

标签: javascriptmomentjsdate-formatting

解决方案


根据您的问题标签,您似乎正在使用 momentjs。在 momentjs GitHub 项目中有一个关于这个的问题。

改编自那里的评论

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}`

推荐阅读