Я получаю дату в каком-то формате ('yyyymmdd' или 'yyyymm') и мне нужно отобразить ее в виде строки в моей текущей локали ,

Для этого примера языковой стандарт - en-GB.

Когда я получаю полный формат (ггггммдд), я предварительно задаю дд / мм / гггг, и если он частичный (ггггмм), мне нужно отобразить мм / гггг, но я получаю 01 / мм / гггг, как я могу это решить?

Это моя функция-

getDateStrFromEsploro(date: string){
    if (date.length === 8){
        const year = date.substring(0,4);
        const month = date.substring(4,6);
        const day = date.substring(6);
        return DateUtils.getDateAsString(new Date(parseInt(year), parseInt(month)-1, parseInt(day)));
    } else if (date.length === 6){
        const year = date.substring(0,4);
        const month = date.substring(4,6);
        return DateUtils.getDateAsString(new Date(parseInt(year), parseInt(month)-1));
    }
}

Мой DateUtils-

public static getDateAsString(date: Date) {
    return date.toLocaleDateString();
}
1
danda 19 Авг 2019 в 07:48

2 ответа

Лучший ответ

Использование параметра toLocaleDateString()

// without options
console.log(new Date(2019, 7).toLocaleDateString('en-GB'))

// with options
let date = new Date(2019, 7).toLocaleDateString('en-GB', {
  year: 'numeric',
  month: 'numeric',
});

console.log(date)
3
User863 19 Авг 2019 в 04:54

Вы можете пропустить цикл, проверив длину

const date1 = [2019, 8];
const date2 = [2019, 8, 7];
const dateString = (date) => new Date(...date).toLocaleDateString('en-GB', {
  day: date.length === 2 ? undefined : 'numeric',
  year: 'numeric',
  month: 'numeric',
});

console.log(dateString(date1));
console.log(dateString(date2));
1
acesmndr 19 Авг 2019 в 07:27