Angular машинопись - дата в формате «момент» с указанием только года или месяца и года - PullRequest
2 голосов
/ 11 марта 2020

У меня есть строка, которая представляет дату в формате «ГГГГММДД», мне нужно отформатировать ее в другом формате.

Я использую момент.

import moment from 'moment';

getDateStr(date: string, format){
    return moment(date, 'YYYYMMDD').format(format);
}

Проблема является то, что если получить частичную дату, строка будет вставлена ​​с «01» вместо отсутствующих параметров.

Например, если формат «ГГГГ-ММ-ДД» и дата «201003« Я получаю » 2010-03-01 ", я хочу получить" 2010-03 ".

Как я могу заставить его работать в общем c способе?

Ответы [ 2 ]

1 голос
/ 11 марта 2020

Вы можете получить неиспользованные токены с момента создания объекта:

function getDateStr(date: string, format) {
    const m = moment(date, 'YYYYMMDD');
    const unused = m.parsingFlags().unusedTokens;
    format = format.split('-');
    format = format.filter(part => !unused.includes(part));
    format = format.join('-');
    return moment(date, 'YYYYMMDD').format(format);
}
0 голосов
/ 11 марта 2020
import moment from 'moment';

getDateStr(date: string, format){
    // you can directly use date, but it should be valid date

    return moment(date).format(format)
}
...