Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/440.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript函数date.getMonth()未检索到正确的月号?(11而不是8)_Javascript_Function_Date - Fatal编程技术网

JavaScript函数date.getMonth()未检索到正确的月号?(11而不是8)

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

因此,首先,这不是关于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格林尼治标准时间+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,而不是如果月份不是任何月份,则会运行该语句。