javascript 1月日期问题

时间:2017-02-01 13:01:43

标签: javascript date monthcalendar

function datecheck(){
    var dt1 = new Date();
    dt1.setUTCFullYear("2017");
    dt1.setUTCDate("1");
    dt1.setUTCMonth("1");
    alert(dt1.getUTCMonth());
}

当我执行此功能时,我得到0作为警报但是如果是setUTCMonth(" 2")。我正处于警戒状态。同样地,如果给出了3,4,5,6,7,8 ...然后它会在同一个月通过,那么1月份的问题是什么?

但我也注意到了,如果

function datecheck(){
    var dt1 = new Date();
    dt1.setUTCFullYear("2017");
    dt1.setUTCMonth("1");
    dt1.setUTCDate("1");
    alert(dt1.getUTCMonth());
}

行为改变它在1通过时开始提醒0。我完全不知道发生了什么......

谁能告诉我哪里出错了。

提前致谢。

1 个答案:

答案 0 :(得分:1)

你有几个问题。首先,除非你真的知道你在做什么,否则以这种方式改变Date对象是不可取的。最好将所需的参数传递给构造函数:

var jan1 = new Date(2017, 0, 1);

请注意,我传入零。这是因为与其他所有与日期相关的计数不同,在JavaScript月份从0-11开始。

其次,你忽略了时区的影响。 JavaScript构造本地时区中的Date对象。例如,我现在是格林尼治标准时间-5。 如果我在浏览器的控制台中执行以下操作:

var dec31 = new Date(2016, 11, 31, 20); // 20hr == 8pm
dec31.getMonth();    // 11
dec31.getUTCMonth(); // 0

五小时的偏移将UTC时间推迟到下个月。