首先,这不是关于getMonth从0-11而不是1-12返回数字,对不起我的英语。
我想制作一个简单的程序,在浏览器上显示当前日期,例如“9月是月,26是日,2016年是”。我这样做了:
!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 GMT + 0200(ora legale Europa occidentale)
8 - 9月
(“Ora legale Europa occidentale”=我当地时间,这里不应该相关)。
但由于某些原因,这是我在运行程序时得到的结果:
周一 9月 26 2016 23:38:39 GMT + 0200(ora legale Europa occidentale)
11 - 12月
月份在日期中是正确的(表示“9月”),但在另一个输出中错误(m =“11”导致var fm为“12月”) 为什么?? :(
答案 0 :(得分:6)
您应该使用==
而不是=
; =
正在分配,==
正在进行比较。
但是,通过使用数组映射月份名称,可以使代码更加优雅。
<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>
将8月和其他必要的月份名称替换为8月
答案 1 :(得分:3)
您不断更改代码中m和fm的值:
if (m=0){fm="January";}
...
if (m=11){fm="December";}
...将m设置为零,然后设置为1,然后设置为2 ......最后一个运行的是m = 11和fm到12月,这将始终发生。
将if语句中的=更改为==以进行修复。并删除else,如果正确使用else,或使用开关(写入的else仅适用于LAST if子句)。
如果here
,请参阅有关其他内容的部分答案 2 :(得分:1)
您的代码存在两个问题。首先,您要在if语句中分配变量而不是测试它们。
if(m=0){fm="January"}
以上是错误的,因为您正在说m = 0
,然后if语句运行,因为m = 0
被解析为m
为0,这意味着是,变量{ {1}}存在,因此if条件为true且代码运行。这一直持续到最后一个,它的值为11,所以fm =&#39; 12月&#39;。
第二个问题是最后一个条件,假定检查月份是否是有效值,如果它不是以明显的方式表示,实际上并没有这样做。
m
当月份不是12月时,else语句正在运行,因为它只连接到12月if语句。通过在first else if语句之后创建所有if语句,我们可以解决这个问题,并使原始代码工作。
else {fm="Error01"}
&#13;