我只是想知道是否可以将日期字符串YYMMDD
转换为YYYY-MM-DD
,例如990102
- > JavaScript中的1999-01-02
?
评论编辑:
如果提供了日期200102
,则需要输出2012-01-02
,而不是1920-01-02
答案 0 :(得分:4)
除非您提供何时使用2000+以及何时使用1900+的条件,否则您不能。它在YY中的信息基本上较少,其中数千和数百个缺失。没有明显的方法可以确定14是2014还是1914
所以你可以选择像[1990 - 2089]
这样的窗口。因此,如果YY>=90
使用1900+。如果YY<90
使用2000+,则可以根据您的要求调整窗口
我不确定在哪个窗口上有标准。
@Kos说:
有一个POSIX standard:&#34;当没有另外指定世纪时, [69,99]范围内的数值应指1969年至1999年 包容性,[00,68]范围内的数值应指2000年 到2068年包容&#34;
ECMA-262(可能更适合javascript)说 任何一年从0到99应被视为1900年至1999年(§20.3.2.1)。 但是,当然实现可以做他们想要的格式而不是 规范涵盖。在Safari中,1/1/49是2049年,1/1/50是1950年。
//990102 -> 1999-01-02
//using window [1990-2089]
function convertDate(yymmdd) {
var d = yymmdd; // YYMMDD
var yy = d.substr(0, 2);
var mm = d.substr(2, 2);
var dd = d.substr(4, 2);
var yyyy = (+yy < 90) ? '20' + yy : '19' + yy;
return yyyy + '-' + mm + '-' + dd;
}
console.log(convertDate('900102'))
console.log(convertDate('140102'))
console.log(convertDate('890102'))
&#13;
答案 1 :(得分:3)
您可以使用substring
方法。
var date="990102";
console.log("19"+date.substring(0,2)+"-"+date.substring(2,4)+"-"+date.substring(4,6));
&#13;
答案 2 :(得分:1)
我知道这是一个老问题,但这是我的解决方案(使用打字稿,它对我有用)
private convertDate(yymmdd: string) {
const date: Date = new Date();
const year = date.getFullYear().toString();
const d = yymmdd; // YYMMDD
const yy = d.substr(0, 2);
const mm = d.substr(2, 2);
const dd = d.substr(4, 2);
const yyyy = (+yy < parseInt(year.slice(2, year.length), 10) + 10) ? '20' + yy : '19' + yy;
return `${yyyy}-${mm}-${dd}`;
}
它是对以上答案的一种改编,除了它确保与当前年份之间的差距保持在递增(10)距离以确保可持续性