Javascript 为什么这个代码运行错误

Javascript 为什么这个代码运行错误,javascript,date,Javascript,Date,我试图用日期格式打印日期,比如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 <

我试图用日期格式打印日期,比如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();
var c=新日期(“1998年9月5日08:45:00”);
函数datePrinter(){
var monthPrinter=c.getMonth();
var dayPrinter=c.getDate();
var yearPrinter=c.getFullYear();
如果(月打印机<10){
monthPrinter=“0”+monthPrinter;
monthPrinter=monthPrinter+1;
}
如果(日期打印机<10){
日期打印机=“0”+日期打印机;
} 
文件写入(月打印机+“/”+日打印机+“/”+年打印机);
}
日期打印机();

在数字前加或追加字符串时,结果将变成字符串。当您递增它时,它将执行字符串连接而不是添加。您需要再次使用
parseInt()
将字符串解析为数字

var c=新日期(“1998年9月5日08:45:00”);
函数datePrinter(){
var monthPrinter=c.getMonth()+1;
var dayPrinter=c.getDate();
var yearPrinter=c.getFullYear();
如果(月打印机<10){
monthPrinter=“0”+monthPrinter;
}
如果(日打印机<10){
dayPrinter=“0”+dayPrinter;
} 
文件写入(月打印机+“/”+日打印机+“/”+年打印机);
}

日期打印机()当您在数字前加或附加字符串时,结果将变成字符串。当您递增它时,它将执行字符串连接而不是添加。您需要再次使用
parseInt()
将字符串解析为数字

var c=新日期(“1998年9月5日08:45:00”);
函数datePrinter(){
var monthPrinter=c.getMonth()+1;
var dayPrinter=c.getDate();
var yearPrinter=c.getFullYear();
如果(月打印机<10){
monthPrinter=“0”+monthPrinter;
}
如果(日打印机<10){
dayPrinter=“0”+dayPrinter;
} 
文件写入(月打印机+“/”+日打印机+“/”+年打印机);
}

日期打印机()您当前的问题是:

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));
函数dateasddmmyyyyy(dt){
var mm=dt.getMonth()+1;
var dd=dt.getDate();
var yyyy=dt.getFullYear();
如果(mm<10){mm=“0”+mm;}
如果(dd<10){dd=“0”+dd;}
返回mm+“/”+dd+“/”+yyyy;
}
var sep5_88=新日期(“1998年9月5日08:45:00”);
文件编写(dateAsDdMmYyyy(1988年9月5日));

您当前的问题是:

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));
函数dateasddmmyyyyy(dt){
var mm=dt.getMonth()+1;
var dd=dt.getDate();
var yyyy=dt.getFullYear();
如果(mm<10){mm=“0”+mm;}
如果(dd<10){dd=“0”+dd;}
返回mm+“/”+dd+“/”+yyyy;
}
var sep5_88=新日期(“1998年9月5日08:45:00”);
文件编写(dateAsDdMmYyyy(1988年9月5日));

您交换了这两行

monthPrinter = "0" + monthPrinter;
monthPrinter = monthPrinter + 1;
这将导致
1
被追加到字符串中,而不是增加数字

或者,也可以写成

monthPrinter = "0" + (monthPrinter + 1);
也就是说,首先向变量中添加1,然后在字符串
“0”
中添加concat


另一个问题是,在第二个
if
条件块中,正在使用
datePrinter
而不是
daydrinter

var c=新日期(“1998年9月5日08:45:00”);
函数datePrinter(){
var monthPrinter=c.getMonth();
var dayPrinter=c.getDate();
var yearPrinter=c.getFullYear();
如果(月打印机<10){
monthPrinter=“0”+(monthPrinter+1);
//                   ^             ^^^^
}
如果(日打印机<10){
//在这里换
dayPrinter=“0”+dayPrinter;
}
文件写入(月打印机+“/”+日打印机+“/”+年打印机);
}

日期打印机()您交换了这两行

monthPrinter = "0" + monthPrinter;
monthPrinter = monthPrinter + 1;
这将导致
1
被追加到字符串中,而不是增加数字

或者,也可以写成

monthPrinter = "0" + (monthPrinter + 1);
也就是说,首先向变量中添加1,然后在字符串
“0”
中添加concat


另一个问题是,在第二个
if
条件块中,正在使用
datePrinter
而不是
daydrinter

var c=新日期(“1998年9月5日08:45:00”);
函数datePrinter(){
var monthPrinter=c.getMonth();
var dayPrinter=c.getDate();
var yearPrinter=c.getFullYear();
如果(月打印机<10){
monthPrinter=“0”+(monthPrinter+1);
//                   ^             ^^^^
}
如果(日打印机<10){
//在这里换
dayPrinter=“0”+dayPrinter;
}
文件写入(月打印机+“/”+日打印机+“/”+年打印机);
}

日期打印机()替换代码中的这些行,您将获得所需的输出

你得到了一个错误的答案,因为你是