一年不工作在Javascript代码



谁能解释一下这段代码?我不流利的JS,所以我需要一些帮助得到一个永久的解决方案。错误的年份一直在显示,直到我更改了底部显示的完整代码中的第5行。我几周前修改了代码,但是它突然停止工作了。

我把第5行改成了:

 if (myDate.getMonth() < 10) {

:

 if (myDate.getMonth() < 1) {

它成功了,我不知道为什么。

这里是完整的代码。我怀疑我的代码变更最终会停止工作。

有人能提供更好的解决方案吗?

$(document).ready(function() {
var myDate = new Date();
myDate.setDate(myDate.getDate()+1);
if (myDate.getMonth() < 1) {
    var betterMonth = "0" + (myDate.getMonth() + 1);
} else {
    var betterMonth = (myDate.getMonth() + 1);          
}
var prettyDate =  betterMonth + '/' + (myDate.getDate()) + '/' + myDate.getFullYear();
$("#formDelivery").val(prettyDate);         
$("#formPhoneNumber").mask("(999) 999-9999");           
$("#contactPhoneNumber").mask("(999) 999-9999");            
jQuery.validator.addMethod("phoneUS", function(phone_number, element) {
    phone_number = phone_number.replace(/s+/g, ""); 
    return this.optional(element) || phone_number.length > 9 &&
    phone_number.match(/^(1-?)?(([2-9]d{2})|[2-9]d{2})-?[2-9]d{2}-?d{4}$/);
    }, "Please specify a valid phone number");
$("#orderForm").validate({
    rules: {
        field: {
            required: true,
            phoneUS: true
        }
    }
});
$("#formDelivery").mask("99/99/9999", {placeholder:"_"}).datepicker({ minDate: +14 });  

});

看看你修改的那一行…

if (myDate.getMonth() < 10) {
   var betterMonth = "0" + (myDate.getMonth() + 1);

表示"如果当前月份小于10",其目的是将前导0添加到个位数月份。我在这里看到的问题是,getMonth()返回的是一个以0为索引的月份列表,因此0实际上是1月,1是2月,以此类推。

That in mind:

代码if (myDate.getMonth() < 10) {实际上是在说"如果当前月份小于十一月,那么在前面加一个0"。当您说返回错误的"year"时,您是指"month"吗?因为我很确定这段代码将输出010而不是10

我认为应该是……

if (myDate.getMonth() < 9) {

JSFiddle例子


有了这些知识,您现在可能意识到修复为什么有效了。如果月份在2月之前,将数字更改为"1"只会添加前面的0。您的解决方案将一直工作到2月左右,并且您将开始看到2/01/2016而不是02/01/2016

最新更新