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。我完全不知道发生了什么......
谁能告诉我哪里出错了。
提前致谢。
答案 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时间推迟到下个月。