在 JavaScript 中设置 JavaScript 日期对象的日期部分而不影响时间部分的最佳方法是什么?
假设你有一个这样的约会
2012 年 10 月 31 日星期三 10:15:00 GMT-0400 (EDT)
并且您想在不更改时间的情况下将其更新为 11 月 1 日。
乍一看,你会认为这行得通,
exampledate.setFullYear(2012);
exampledate.setMonth(10);
exampledate.setDate(1);
但是结果是
2012 年 12 月 1 日星期六 10:15:00 GMT-0500(美国东部时间)
我认为这是因为 10 月有 31 天而 11 月只有 30 天。因为这显然不是一直都有效。我的其他选择是什么?我必须创建一个新的日期对象吗?
最佳答案
JavaScript 日期对象 setter 方法通常允许您(可选)一次设置多个日期/时间组件(除了主要组件),视情况而定——这就是您想要做的。
对于您的用例,setFullYear
的语法是 setFullYear(year,month,day)
,因此除了显式设置年份(这会导致月份和日期根据您的初始日期隐式更新),您还可以在您使用时明确设置月份和日期。例如:
var d = new Date();
d.setFullYear(2020,10,3);
会回来
Tue Nov 03 2020 13:10:34 GMT-0500 (EST)
参见 the JavaScript setFullYear() method了解更多详情。
因为 Date 对象的时间部分(例如小时、分钟、秒、毫秒)不依赖于日期部分(年、月、日),所以您的初始时间部分将被保留。如果您随后需要更新时间组件,您可以根据需要安全地使用 setHours()
或其他方法,因为不会发生对日期组件的隐式更新。
关于javascript - 在不更改时间部分的情况下更新 javascript 对象的日期部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13689023/