Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将2位日期转换(格式化)为4位日期_Javascript_Jquery - Fatal编程技术网

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

Javascript 将2位日期转换(格式化)为4位日期,javascript,jquery,Javascript,Jquery,我无法将2位数的日期正确格式化为4位数的日期 我有一个文本输入字段: <input type="text" value="" class="date"/> 好的,现在是奇怪的事情(我将使用12/12/12作为示例日期): 1) getFullYear()返回所有IE中的1912,FF。Chrome回归2012年 2) getYear()在IE、Chrome中返回112。FF返回12 因此,现在唯一的选择似乎是嗅探用户代理,并相应地使用它。周围有没有嗅探UA的声音 首先,您可以尝试分

我无法将2位数的日期正确格式化为4位数的日期

我有一个文本输入字段:

<input type="text" value="" class="date"/>
好的,现在是奇怪的事情(我将使用12/12/12作为示例日期):

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

2) getYear()在IE、Chrome中返回112。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));
然后初始化一个新的日期对象:

var date= new Date(year,month,day);
或者将其写回字段,就像您所做的那样:

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

在四处打听之后,我最终使用了。我试过了,但因为我在部分使用unix时间戳,moment似乎能更好地处理这些问题(IMO)

使用:


你可能想看看这篇文章——JavaScript不适合日期。如果我在日期字段中键入类似“04/19/10”的内容,你怎么知道我说的是1910年还是2010年?你的输入应该需要整整一年。@Brianhover是的,还有其他一些事情,但我认为客户希望JS在日期进行验证/更正:-S@kinsho对于这个应用程序,我们假设它是20XX,因为我们正在收集的数据应该只发生在20XX。有趣的是,如果我输入“1992”作为一年,那么一个测试将失败。在您的代码中,它将返回“2092”,这将是不正确的,因此您必须首先测试提供的年份长度。这一点没有争议,而且还有许多其他测试需要检查,例如是否有字母/空格,此日期是否有效(34/70/09无效),等等……通常,我建议您实现其他一些东西,比如jQueryUIDatePicker(或其他插件),而不是重新发明轮子。我试着专注于你的问题。我的假设是,当你强制一年为2位数字时,它必须高于1999年。@yoav_barnea我实际上在输入上有一个日期选择器,但客户也希望能够手动输入日期,是的。。。
$(this).val((date.getMonth()+1)+'/'+date.getDate()+'/'+date.getFullYear());
const moment = require("moment")
const date = moment("21", "YY")
const year = date.format("YYYY")