我在使用Javascript日期对象时遇到了一些非常奇怪的行为。
var t = new Date();
t.setUTCFullYear(2014);
t.setUTCMonth(10);
t.setUTCDate(20);
console.log(t);
返回: 日期{星期六2014年12月20日10:26:23 GMT-0800(太平洋标准时间)}
然而,如果您使用t.setMonth(10)
,那么您正确地获得了11月。我做错了吗?
答案 0 :(得分:6)
这将在明天按预期运作。
今天(10月31日),t
初始化为31
。当您将月份设置为11月时,您将设置“11月31日”,更正为12月1日。
然后将日期设置为20
,但月份已经更改。首先设置日期,或者更好,使用setUTCMonth()
的两个参数verson:
t.setUTCMonth(10, 20);
答案 1 :(得分:2)
也许我错过了一些东西(编辑:我是,Paul's answer覆盖它),但你是对的。但是,这有效:
var t = new Date();
t.setUTCFullYear(2014);
t.setUTCMonth(10, 20); // Set day here instead
console.log(t); // Thu Nov 20 2014 12:40:42 GMT-0600 (Central Standard Time)
如果切换set语句的顺序,它也有效:
var t = new Date();
t.setUTCFullYear(2014);
t.setUTCDate(20);
t.setUTCMonth(10);
答案 2 :(得分:0)
问题是特定日期的混合以及设置日期的各个部分的顺序。如果你逐步了解它发生了什么,那就更清楚了: