在JavaScript中将字符串YYMMDD转换为YYYYMMDD

时间:2017-05-09 09:50:05

标签: javascript string date

我只是想知道是否可以将日期字符串YYMMDD转换为YYYY-MM-DD,例如990102 - > JavaScript中的1999-01-02

评论编辑:

如果提供了日期200102,则需要输出2012-01-02,而不是1920-01-02

3 个答案:

答案 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;

@RobG

  

ECMA-262(可能更适合javascript)说   任何一年从0到99应被视为1900年至1999年(§20.3.2.1)。   但是,当然实现可以做他们想要的格式而不是   规范涵盖。在Safari中,1/1/49是2049年,1/1/50是1950年。

&#13;
&#13;
//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;
&#13;
&#13;

答案 1 :(得分:3)

您可以使用substring方法。

&#13;
&#13;
var date="990102";
console.log("19"+date.substring(0,2)+"-"+date.substring(2,4)+"-"+date.substring(4,6));
&#13;
&#13;
&#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)距离以确保可持续性