我正在尝试使用日期格式打印日期,例如09/05/1998,但是当我运行代码时,我得到081/5/1998 我做错了什么?
var c = new Date("September 5, 1998 08:45:00");
function datePrinter(){
var monthPrinter = c.getMonth();
var dayPrinter = c.getDate();
var yearPrinter = c.getFullYear();
if(monthPrinter < 10){
monthPrinter = "0" + monthPrinter;
monthPrinter = monthPrinter + 1;
}
if(datePrinter < 10){
datePrinter = "0" + dayPrinter;
}
document.write(monthPrinter + "/" +dayPrinter + "/" + yearPrinter);
}
datePrinter();
答案 0 :(得分:1)
在为数字前置或附加字符串时,结果将变为字符串。当你递增它时,它将进行字符串连接而不是添加。您需要再次使用parseInt()
将字符串解析为Number。
var c = new Date("September 5, 1998 08:45:00");
function datePrinter(){
var monthPrinter = c.getMonth() + 1;
var dayPrinter = c.getDate();
var yearPrinter = c.getFullYear();
if(monthPrinter < 10){
monthPrinter = "0" + monthPrinter;
}
if(dayPrinter < 10){
dayPrinter = "0" + dayPrinter;
}
document.write(monthPrinter + "/" +dayPrinter + "/" + yearPrinter);
}
datePrinter();
&#13;
答案 1 :(得分:1)
您换了两行
EXPLAIN SELECT ...
导致monthPrinter = "0" + monthPrinter;
monthPrinter = monthPrinter + 1;
被附加到字符串而不是增加数字。
或者,同样可以写成
1
表示首先在变量中加1,然后连接字符串monthPrinter = "0" + (monthPrinter + 1);
。
其他问题是,在第二个"0"
条件块中使用datePrinter
代替dayPrinter
。
if
答案 2 :(得分:0)
你当前的问题是:
monthPrinter = "0" + monthPrinter;
monthPrinter = monthPrinter + 1;
的顺序错误。当你添加两个数字时,你会得到一个数字。添加字符串和数字(或其他字符串)时,会得到一个字符串。那么在你的情况下会发生什么:
monthPrinter = "0" + monthPrinter; // S + I -> S ("08")
monthPrinter = monthPrinter + 1; // S + I -> S ("081")
如果您更改订单,您将获得更好的结果:
monthPrinter = monthPrinter + 1; // I + I -> I (9)
monthPrinter = "0" + monthPrinter; // S + I -> S ("09")
此外,您的日期填充无法按预期工作,因为您检查datePrinter
,函数而不是dayPrinter
变量。
另外,创建用于在文档中打印日期的函数是非常特定的用例。你可以通过更通用的功能灵活地将它格式化为你想要的字符串,然后你可以在更多的情况下重复使用它,这样会好得多:
function dateAsDdMmYyyy(dt) {
var mm = dt.getMonth() + 1;
var dd = dt.getDate();
var yyyy = dt.getFullYear();
if (mm < 10) { mm = "0" + mm; }
if (dd < 10) { dd = "0" + dd; }
return mm + "/" + dd + "/" + yyyy;
}
var sep5_88 = new Date("September 5, 1998 08:45:00");
document.write(dateAsDdMmYyyy(sep5_88));
答案 3 :(得分:0)
在代码中替换这些行,您将获得所需的输出。
你得错了,因为你试图在月份打印机中为一个字符串添加1,它将1添加到生成081的字符串08。
if(monthPrinter < 10)
{
monthPrinter = monthPrinter + 1;
monthPrinter = "0" + monthPrinter;
}
if(datePrinter < 10)
{
datePrinter = "0" + dayPrinter;
}
答案 4 :(得分:0)
您需要交换这些行,
monthPrinter =“0”+ monthPrinter; monthPrinter = monthPrinter + 1;`
如,
monthPrinter = monthPrinter + 1;
monthPrinter = "0" + monthPrinter;
以下是有效的演示: https://jsfiddle.net/nsfqxou1/1/
希望这有帮助!