将2位数日期转换(格式化)为4位数日期

我无法正确格式化2位数日期作为4位数日期。

我有一个文本输入字段:

 

然后我想在用户输入日期后以“mm / dd / yyyy”格式对其进行格式化。 所以我有一个onChange事件:

 $('.date').on('change',function(){ var date = new Date($(this).val()); $(this).val((date.getMonth()+1)+'/'+date.getDate()+'/'+date.getFullYear()); }); 

好的,所以现在出现了奇怪的事情(我将使用12/12/12作为示例日期):

1)getFullYear()在所有IE,FF中返回1912。 Chrome返回2012年。

2)getYear()在IE中返回112,Chrome。 FF返回12。

因此,此时似乎唯一的选择是嗅探用户代理,并相应地使用它。 反正在嗅闻UA吗?

首先,您可以尝试分离输入的各个部分

 ... var input=$(this).val(); var month=input.substr(0,2)-1; var day=input.substr(3,2); var year=parseInt("20"+ input.substr(6,2)); 

然后启动一个新的Date对象:

 var date= new Date(year,month,day); 

或者把它写回到现场,就像你做的那样:

 $(this).val((date.getMonth()+1)+'/'+date.getDate()+'/'+date.getFullYear()); 

在四处询问之后,我最终使用了Moment.js 。 我试过date.js,但因为我正在使用unix时间戳,所以时刻似乎更好地处理了这些(IMO)。

使用moment.js :

 const moment = require("moment") const date = moment("21", "YY") const year = date.format("YYYY")