Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/479.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 编写一个函数,将格式为M/D/YYYY的用户输入日期转换为API所需的格式(YYYYMMDD)_Javascript - Fatal编程技术网

Javascript 编写一个函数,将格式为M/D/YYYY的用户输入日期转换为API所需的格式(YYYYMMDD)

Javascript 编写一个函数,将格式为M/D/YYYY的用户输入日期转换为API所需的格式(YYYYMMDD),javascript,Javascript,编写一个函数,将格式为M/D/YYYY的用户输入日期转换为API所需的格式(YYYYMMDD)。参数“userDate”和返回值是字符串。 例如,它应该将用户输入的日期“12/31/2014”转换为适用于API的“20141231”。 我试过: 函数formatDate(userDate){ //格式从M/D/YYYY到YYYYMMDD a=新日期(userDate); y=a.getFullYear(); m=a.getMonth(); d=a.getDate(); 返回y.toString

编写一个函数,将格式为M/D/YYYY的用户输入日期转换为API所需的格式(YYYYMMDD)。参数“userDate”和返回值是字符串。 例如,它应该将用户输入的日期“12/31/2014”转换为适用于API的“20141231”。 我试过:

函数formatDate(userDate){
//格式从M/D/YYYY到YYYYMMDD
a=新日期(userDate);
y=a.getFullYear();
m=a.getMonth();
d=a.getDate();
返回y.toString()+m.toString()+d.toString();
}
控制台日志(格式日期(“2014年12月31日”)
String#split()
指定
/
上的日期,然后指定生成的日期、月份和年份

函数AddLeadingZero(num){
返回值(num<10?'0':'')+num;
}
函数formatDate(userDate){
var[month,day,year]=userDate.split('/');
返回年份+加铅零(月)+加铅零(日);
}
控制台日志(格式日期(“2014年12月31日”);
控制台日志(格式日期(“2014年1月10日”)
String#split()
指定
/
上的日期,然后指定生成的日期、月份和年份

函数AddLeadingZero(num){
返回值(num<10?'0':'')+num;
}
函数formatDate(userDate){
var[month,day,year]=userDate.split('/');
返回年份+加铅零(月)+加铅零(日);
}
控制台日志(格式日期(“2014年12月31日”);

控制台日志(格式日期(“2014年1月10日”)问题在于,它返回一个从0到11的月指数,因此12月显示为11,而不是12

问题是,它返回一个从0到11的月指数,因此12月份显示为11,而不是12

我很确定
Date
的构造函数不需要任意格式的字符串,就是这样。想想当月份(或日期)小于10时会发生什么。另外,
Date.prototype.getMonth
返回一个从0到11的月份索引,这是有原因的。您是否考虑过只使用
?它以
Y-m-d
格式返回一个日期,这是明确的,对于你的API(这很奇怪),你只需去掉
-
就可以了,你的输出月份是
11
。你刚刚得到了一大堆答案。我很确定
Date
的构造函数不需要任意格式的字符串,所以就是这样。想想当月份(或日期)小于10时会发生什么。另外,
Date.prototype.getMonth
返回一个从0到11的月份索引,这是有原因的。您是否考虑过只使用
?它以
Y-m-d
格式返回一个日期,这是明确的,而对于你的API(这很奇怪),你只需去掉
-
s,你就完成了。首先,你的输出月份是
11
。你就得到了一大堆答案。
var convertDate = function(usDate) {
  var dateParts = usDate.split(/(\d{1,2})\/(\d{1,2})\/(\d{4})/);
  return dateParts[3] + dateParts[1] +  dateParts[2];
}

var inDate = "12/31/2014";
var outDate = convertDate(inDate);

alert(outDate);