5

我无法将 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、Chrome 中返回 112。FF 返回 12。

因此,此时似乎唯一的选择是嗅探用户代理,并相应地使用它。有没有嗅探UA?

4

4 回答 4

2

使用moment.js

const moment = require("moment")
const date = moment("21", "YY")
const year = date.format("YYYY")
于 2018-03-08T02:19:10.397 回答
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());
于 2013-01-31T16:45:16.163 回答
0

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

于 2013-01-31T19:35:49.120 回答
0

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

于 2021-07-07T13:41:55.040 回答