在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天。因为这显然不能一直正常运作。我还有什么其他选择?我是否必须创建一个新的约会对象?
答案 0 :(得分:2)
首先设置日期,然后是月份。
答案 1 :(得分:2)
JavaScript日期对象设置器方法通常允许您(可选)一次设置多个日期/时间组件(除了主要组件),视情况而定 - 这就是您想要做的。
对于您的用例,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()
或其他方法,因为不会对日期组件进行隐式更新。