仅使用JS编写一个函数,将格式化为M / D / YYYY的用户输入日期转换为API所需的格式(YYYYMMDD)。参数" userDate"并且返回值是字符串。
例如,它应该转换用户输入的日期" 12/31/2014"到" 20141231"适合API。
我写道:
function formatDate(userDate) {
// format from M/D/YYYY to YYYYMMDD
var myDate = new Date(userDate);
var day = myDate.getDay();
var month = myDate.getMonth();
var year = myDate.getFullYear();
var d = day.toString();
var m = month.toString();
var y = year.toString();
return y + m + d;
}
console.log(formatDate("12/31/2014"));
但是这回来了:2014113
如果它没有返回' 20141231'
感谢@ gurvinder372 +1,我得到了' 20141231' 但答案是告诉我iv从4中传出0 ...我失败了:
Example case: Wrong answer
Two-digit month and day: Wrong answer
One-digit day: Wrong answer
One-digit month: Wrong answer
答案 0 :(得分:1)
Date
中的月份从0
计算,因此:
myDate.getMonth();
将在1月份返回0
,依此类推。
此外:
var day = myDate.getDay();
表示,从0
开始计算一周中的某一天,因此应将其替换为:
var day = myDate.getDate();
对于一位数值,您需要检查它是否小于10
并有条件地将其添加到0
。所以最终的形式应该是:
function formatDate(userDate) {
// format from M/D/YYYY to YYYYMMDD
var myDate = new Date(userDate);
var day = myDate.getDate();
var month = myDate.getMonth() + 1;
var year = myDate.getFullYear();
var d = +day.toString() < 10 ? '0' + day.toString() : day.toString();
var m = +month.toString() < 10 ? '0' + month.toString() : month.toString();
var y = year.toString(); // no need for check one-digit values
return y + m + d;
}
答案 1 :(得分:0)
但这是回归:2014113如果它不返回'20141231'
月份从0
替换
var month = myDate.getMonth();
与
var month = myDate.getMonth() + 1;
如果您还需要处理单位数填充,那么也可以这样做
function padToTwoChar( value )
{
return ( "0" + value ).slice(-2);
}
并且您的退货声明将变为
return padToTwoChar( y ) + padToTwoChar( m ) + padToTwoChar( d );
答案 2 :(得分:0)
希望这有助于你
function formatDate(userDate) {
var myDate = new Date(userDate);
var day = myDate.getDate();
var month = myDate.getMonth() + 1; // +1 as month starts with o
var year = myDate.getFullYear();
var d = (day <= 9) ? '0' + day : day.toString(); // append 0 for single digit
var m = (month <= 9) ? '0' + month : month.toString(); // append 0 for single digit
var y = year.toString();
return y + m + d;
}
console.log(formatDate("1/1/2014"));
&#13;
答案 3 :(得分:0)
您甚至可以摆脱使用PHAuthorizationStatusNotDetermined
构造函数。除非您使用ISO-8601 format,否则通常不建议使用日期构造函数进行解析,因为其他格式的浏览器的实现方式不同。
以下是仅使用字符串split()
函数的示例。
如果您想要对单个数字进行零填充,请使用PHAuthorizationStatusDenied
函数,将Date
格式设置为pad()
。
1