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

时间:2013-01-31 16:33:03

标签: javascript jquery

我无法将2位数日期格式化为4位数日期。

我有一个文本输入字段:

<input type="text" value="" class="date"/>

然后我想在用户输入日期后以“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吗?

4 个答案:

答案 0 :(得分: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));

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

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

或者将其写回字段,就像你一样:

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

使用moment.js

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

答案 3 :(得分:0)

const [日、月、年] = values.date.split('/');