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

Joe*_*zel 5 javascript jquery

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

我有一个文本输入字段:

<input type="text" value="" class="date"/>
Run Code Online (Sandbox Code Playgroud)

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

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

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

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

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

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

yoa*_*nea 1

您可以首先尝试将输入的各个部分分开

...
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));
Run Code Online (Sandbox Code Playgroud)

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

var date= new Date(year,month,day);
Run Code Online (Sandbox Code Playgroud)

或将其写回字段,就像您所做的那样:

$(this).val((date.getMonth()+1)+'/'+date.getDate()+'/'+date.getFullYear());
Run Code Online (Sandbox Code Playgroud)

  • 有趣,但如果我输入“1992”作为年份,则可能会失败的一个测试。在您的代码中,它将返回“2092”,这是不正确的,因此您必须首先测试提供的年份的长度。 (2认同)