首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >setMonth()在第31天的情况下设置了错误的日期

setMonth()在第31天的情况下设置了错误的日期
EN

Stack Overflow用户
提问于 2016-06-03 19:40:26
回答 2查看 1.5K关注 0票数 -3

我正面临着JS的setMonth函数非常奇怪的行为。单击图像时,我显示了一个日历,上面有当前月份的所有日期以及下个月和上个月的一些日期(灰色)。

只要当前选择的日期是任何月份的31号。假设2017年5月31日我选择了I will set in a textfield。如果我点击2017年6月2日,而不是将textfield设置为2017年6月2日,它将设置2017年7月2日?

请建议这里出了什么问题。

使用的代码片段如下

var tempDate = new Date(current); //Suppose : current --> Wed May 31 16:09:00 UTC+0530 2017 
var dayOfMonth = parseInt(element.text(), 10); //Suppose : element.text() --> 2   
tempDate.setMonth(tempDate.getMonth() + (dayOfMonth > 15 ? -1 : 1)); //tempDate.getMonth() + (dayOfMonth > 15 ? -1 : 1) returns 10
tempDate.setDate(dayOfMonth);

//Output Expected : 02 June 2017 but it gives 02 July 2017

EN

回答 2

Stack Overflow用户

发布于 2016-06-03 19:48:14

在javascript date对象中,month是从0开始的,所以如果您想要生成任何月份,请执行相应的操作。请参阅以下url以获取日期:MDN Date

作为您的代码,我认为您在dayOfMonth > 15 ?1:-1处犯了错误

var dayOfMonth  = 13;
alert((dayOfMonth > 15 ? 1 : -1))
var tempDate = new Date(); 
tempDate.setMonth(tempDate.getMonth() + (dayOfMonth > 15 ? 1 : -1)); 
tempDate.setDate(dayOfMonth);
alert(tempDate)

票数 1
EN

Stack Overflow用户

发布于 2018-10-30 06:10:47

我想那是为了操作的标准行为,当月没有天(31)时,操作取有那一天的下一个月

>var date = new Date('2018/10/31');
undefined
>date
Wed Oct 31 2018 00:00:00 GMT-0600 (hora estándar central)
>date.setMonth(date.getMonth() + 1);
1543644000000
>date
Sat Dec 01 2018 00:00:00 GMT-0600 (hora estándar central)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37613449

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档