[英]Error setting date of month to 31st
在将日期设置为31日时,我们遇到了此问题。
function getTodayMidnight() { var date = new Date(); date.setHours(0); date.setMinutes(0); date.setSeconds(1); date.setMilliseconds(0); return date; } function getDates() { var octStartDate = getTodayMidnight(); octStartDate.setDate(1); octStartDate.setMonth(9); var octEndDate = getTodayMidnight(); octEndDate.setDate(31); octEndDate.setMonth(9); console.log(octStartDate); console.log(octEndDate); } getDates();
我正在考虑时区中的日期偏移(+530, 330 mins)
。 对于本月初的情况,应采取这种措施。 (我们希望返回上个月并显示日期)。 但是,对于本月的最后日期,我们得到的输出是错误的。 他们为什么指向同一日期?
假设您今天(11月15日)运行了该程序,则new Date()
返回一个Date
对象,该对象的月份设置为11月。 因此,对setDate(31)
的调用将导致日期溢出到12月1日(因为11月只有30天)。 然后,您调用setMonth(9)
,因此最终结果对应于10月1日。
显然,您可以通过切换方法调用的顺序来避免这种情况。 但是,为了完全避免这种排序问题,我建议使用Date(year, month, date, ...)
构造函数(这也避免了对值类型进行突变,通常认为这是一件好事)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.