繁体   English   中英

将月份的日期设置为31号时出错

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM