javascript-将日期显示为字符串,不填充“0”;01“;如果日期仅由年和月组成

javascript-将日期显示为字符串,不填充“0”;01“;如果日期仅由年和月组成,javascript,angular,typescript,date,Javascript,Angular,Typescript,Date,我正在获取某种格式的日期('yyyymmdd'或'yyyyymm'),需要在我当前的语言环境中将其显示为字符串 对于本例,区域设置为“en GB” 当我得到完整格式(yyyymmdd)时,我预设了dd/mm/yyyy,如果它是部分格式(yyyymm),我需要显示mm/yyyy,但是我得到了01/mm/yyyy,我如何解决它 这是我的职责- getDateStrFromEsploro(date: string){ if (date.length === 8){ const

我正在获取某种格式的日期('yyyymmdd'或'yyyyymm'),需要在我当前的语言环境中将其显示为字符串

对于本例,区域设置为“en GB”

当我得到完整格式(yyyymmdd)时,我预设了dd/mm/yyyy,如果它是部分格式(yyyymm),我需要显示mm/yyyy,但是我得到了01/mm/yyyy,我如何解决它

这是我的职责-

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));
    }
}
我的约会-

public static getDateAsString(date: Date) {
    return date.toLocaleDateString();
}

使用
toLocaleDateString()
options参数

//不带选项
console.log(新日期(2019年7月)toLocaleDateString('en-GB'))
//有选择权
let date=新日期(2019年7月)。toLocaleDateString('en-GB'{
年份:'数字',
月份:'数字',
});

console.log(日期)
使用
toLocaleDateString()
options参数

//不带选项
console.log(新日期(2019年7月)toLocaleDateString('en-GB'))
//有选择权
let date=新日期(2019年7月)。toLocaleDateString('en-GB'{
年份:'数字',
月份:'数字',
});

console.log(date)
您可以通过检查长度跳过循环

const date1=[2019,8];
const date2=[2019,8,7];
const dateString=(date)=>新日期(…date).toLocaleDateString('en-GB'{
day:date.length==2?未定义:“数值”,
年份:'数字',
月份:'数字',
});
log(dateString(date1));

log(dateString(date2))您可以通过检查长度跳过循环

const date1=[2019,8];
const date2=[2019,8,7];
const dateString=(date)=>新日期(…date).toLocaleDateString('en-GB'{
day:date.length==2?未定义:“数值”,
年份:'数字',
月份:'数字',
});
log(dateString(date1));

log(dateString(date2))new Date(parseInt(year),parseInt(month)-1,parseInt(day)
;-)parseInt在
new Date(parseInt(year),parseInt(month)-1,parseInt(day)
;-)中是不必要的。这将返回两个日期的无效日期。看<代码>新日期([2019,8])
与ECMA-262支持的格式不一致,数组也与OP的数据不一致。@RobG添加了分解结构以传递日期。我看到OP使用自定义函数从字符串中解析了日期,因此添加了此解决方案。在Safari中,这会返回两个日期的无效日期。看<代码>新日期([2019,8])与ECMA-262支持的格式不一致,数组也与OP的数据不一致。@RobG添加了分解结构以传递日期。我看到OP使用一个自定义函数解析了字符串中的日期,从而添加了这个解决方案。