JavaScript函数date.getMonth()未检索到正确的月号?(11而不是8)
因此,首先,这不是关于getMonth从0-11而不是1-12返回数字,我的英语很抱歉 我想制作一个简单的程序,在浏览器上显示当前日期,比如9月是月,26日是日,2016年是年。我这样做:JavaScript函数date.getMonth()未检索到正确的月号?(11而不是8),javascript,function,date,Javascript,Function,Date,因此,首先,这不是关于getMonth从0-11而不是1-12返回数字,我的英语很抱歉 我想制作一个简单的程序,在浏览器上显示当前日期,比如9月是月,26日是日,2016年是年。我这样做: !DOCTYPE HTML> <html> <body> <p id="test"></p> // this is where date will be displayed <scrip
!DOCTYPE HTML>
<html>
<body>
<p id="test"></p> // this is where date will be displayed
<script>
var date = new Date(); // i get the date
var m = date.getMonth(); // i get the month
var fm; // all this is to convert number to month name
if (m=0){fm="January";}
if (m=1){fm="February";}
if (m=2){fm="March";}
if (m=3){fm="April";}
if (m=4){fm="May";}
if (m=5){fm="Jun";}
if (m=6){fm="July";}
if (m=7){fm="August";}
if (m=8){fm="September";}
if (m=9){fm="October";}
if (m=10){fm="November";}
if (m=11){fm="December";}
else {fm="Error01"}
var d = date.getDate(); // the day
var y = date.getFullYear();
//document.getElementById("test").innerHTML= fm + " is the month, " + d + " is the Date(day) and "+ y + " is the full year";
// i removed this ^ to highlight the new output below:
document.getElementById("test").innerHTML= date + "<br>" + m + " - " + fm;
</script>
</body>
</html>
此时,输出应为:
2016年9月26日星期一23:38:39格林尼治标准时间+0200欧洲法律
9月8日至9月
Ora legale Europa occidentale=我的当地时间,它不应该与这里相关
但出于某些原因,这是我运行程序时得到的结果:
2016年9月26日星期一23:38:39格林尼治标准时间+0200欧洲法律
12月11日至11日
月在日期上是正确的,表示9月,但在另一个输出m=11中是错误的,这导致var fm为12月
为什么??: 您不断更改代码中m和fm的值:
if (m=0){fm="January";}
...
if (m=11){fm="December";}
…将m设置为0,然后设置为1,然后设置为2。。。最后一个要运行的是m=11和fm到12月,这将一直发生
将if语句中的=更改为==以进行修复。删除else,如果正确使用else,或者使用一个开关。else只适用于最后一个if子句
如果您应该使用==不=;=正在赋值,==正在比较
但是,通过使用数组映射月份名称,可以使代码更加优雅
<script>
var date = new Date(); // i get the date
var m = date.getMonth(); // i get the month
var monthMap = ["January", "Febrauary", "Mar..", "Apr..", "May", "June", "July", "Aug..", "Sept", "Oct", "Nov", "Dec"];
var d = date.getDate(); // the day
var y = date.getFullYear();
//document.getElementById("test").innerHTML= monthMap[m] + " is the month, " + d + " is the Date(day) and "+ y + " is the full year";
// i removed this ^ to highlight the new output below:
document.getElementById("test").innerHTML= date + "<br>" + m + " - " + monthMap[m];
</script>
替换八月。。。对于八月和其他必要的月份名称,您的代码有两个问题。首先,您正在分配变量,而不是在if语句中测试它们
if(m=0){fm="January"}
上面的说法是错误的,因为你说的是m=0,然后if语句运行,因为m=0被解析成m,m是0,这意味着是的,变量m存在,因此if条件为true,代码运行。这会一直持续到最后一个值为11的值,因此fm='December'
第二个问题是,最后一个条件(应该检查月份是否为有效值,如果不是,则以明显的方式表示)实际上并没有这样做
else {fm="Error01"}
else语句在月份不是十二月时运行,因为它只连接到十二月if语句。通过在第一个else if语句之后生成所有if语句,我们可以解决这个问题,并使原始代码正常工作
//这是显示日期的地方
变量日期=新日期;//我知道日期了
var m=date.getMonth;//我得到这个月的工资
var fm;//所有这些都是将数字转换为月份名称
如果m==0{fm=一月;}
如果m===1{fm=二月;}
如果m==2{fm=March;}
如果m===3{fm=April;}
如果m==4{fm=May;}
如果m===5{fm=Jun;}
如果m===6{fm=July;}
如果m===7{fm=August;}
如果m===8{fm=9月;}
如果m===9{fm=10月;}
如果m===10{fm=11月;}
如果m===11{fm=December;}
else{fm=Error01}console.logfm
var d=date.getDate;//那天
变量y=date.getFullYear;
document.getElementByIdtest.innerHTML=fm+表示月份,+d+表示日期,+y+表示全年;
//我删除了此^以突出显示以下新输出:
//document.getElementByIdtest.innerHTML=date++m+-+fm;
//上述代码已正确完成测试,因此已被原始代码替换
所有ifm=xx语句都是赋值而不是比较。应该是:ifm===xx也就是说,m=0将m设置为0并返回该0。但是,如果变量m被设置为0Ohh yea,则m==0或m==0将进行测试,谢谢!solved如果最后一个else仅适用于m==11,则需要使用else。另外,使用两个等号。@AndrewEisenberg为了简单和快速,我会使用a。Frederico,这段代码还可以帮助你在将来更简单地格式化你的日期/时间。光是这一点并不能修复他们的错误。还有一个事实是,如果月份不是12月,则else语句将fm设置为Error01,而不是如果月份不是任何月份,则会运行该语句。