【发布时间】:2012-12-03 17:59:43
【问题描述】:
在 JavaScript 中设置 JavaScript 日期对象的日期部分而不影响时间部分的最佳方法是什么?
假设你有这样的约会
Wed Oct 31 2012 10:15:00 GMT-0400 (EDT)
并且您想在不更改时间的情况下将其更新为 11 月 1 日。
乍一看,你会认为这是可行的,
exampledate.setFullYear(2012);
exampledate.setMonth(10);
exampledate.setDate(1);
但结果是
Sat Dec 01 2012 10:15:00 GMT-0500 (EST)
我认为这样做的原因是 10 月有 31 天,而 11 月只有 30 天。因为这显然并不总是正确的。我还有哪些其他选择?我需要创建一个新的日期对象吗?
【问题讨论】:
-
您说的是从 EDT 到 EST 的转换吗?如果是这样,请记住,在 11 月 4 日凌晨 2 点,使用 EDT 的国家/地区切换到 EST,同时神奇地获得了额外的时间。
-
另外,您是否应该将
setMonth称为 11 而不是 10?我认为最后的日期是 12 月。 -
这就是问题所在。由于原始日期是 2012 年 10 月 31 日,而我将日期设置为 2012 年 11 月 31 日,这不是实际日期,因此第二行将日期设置为 12 月 1 日。最后一行什么也没做。
-
啊,我现在明白你的意思了 :) 你可能想考虑使用像 Moment.js 这样的库。
-
@MichaelMior,不需要外部依赖,这可以使用
setFullYear(year,month,date)本地完成
标签: javascript date datetime