Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/452.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript setMonth()在第31天的情况下设置了错误的日期_Javascript_Date_Datetime - Fatal编程技术网

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

Javascript setMonth()在第31天的情况下设置了错误的日期,javascript,date,datetime,Javascript,Date,Datetime,我面对的是JS的setMonth函数非常奇怪的行为。 点击一张图片,我就会显示一个日历,上面有当月的所有日期以及下个月和上个月的一些日期(灰色) 无论何时选择当前日期为任何月份的31日。假设2017年5月31日,我选择我将在文本字段中设置。如果我点击2017年6月2日,而不是将textfield设置为2017年6月2日,则设置为2017年7月2日 请说明这里出了什么问题 代码片段的用法如下 var tempDate = new Date(current); //Suppose : current

我面对的是JS的setMonth函数非常奇怪的行为。 点击一张图片,我就会显示一个日历,上面有当月的所有日期以及下个月和上个月的一些日期(灰色)

无论何时选择当前日期为任何月份的31日。假设2017年5月31日,我选择我将在文本字段中设置。如果我点击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

在javascript日期对象中,月份从0开始,因此,如果要生成任何月份,请相应地执行。请参阅此url以了解日期:

作为你的代码,我认为你在 月日>15?1-1

var dayOfMonth=13;
警报((月日>15-1:-1))
var tempDate=新日期();
setMonth(tempDate.getMonth()+(dayOfMonth>15?1:-1));
tempDate.setDate(每月的第几天);

alert(tempDate)
我认为这是当月份没有日期(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为基础的。分享复制你问题的最低限度样本。是的,不清楚关于第31天你在问什么<代码>10月31日星期二&
预计输出:2017年6月2日,但它给出2017年7月2日
&
假设2017年5月31日我选择我将在文本字段中设置。如果我单击2017年6月2日,而不是将textfield设置为2017年6月2日,则设置为2017年7月3日
。你发布的照片只是假设你设置了错误的日期选择器日期格式,但与你所有的身体问题所谈论的完全无关。你更新了问题。例如,在设定日期时,实际上犯了错误。这个问题毫无意义。请参阅。好的,但是
getMonth()
也是基于零的,OP使用它来设置月份。所以我不确定这是不是问题,谢谢你的快速回复。我找到了解决办法。实际上,JavaScript的日期对象允许您给出无效的月和日的组合;它们会自动为您纠正这些错误(例如,如果您将月份设置为6月31日,则会自动将其设置为7月1日)。@user222419这取决于您所称的“无效”。Date对象的方法在标准中都有很好的定义,它们的行为非常便于进行日期操作。您希望6月30日+1天返回无效日期还是7月1日?感谢各位快速响应。我找到了解决方案,我不得不多次调试代码来理解这个问题。事实上,我偶然发现我应该在设定月之前设定日期。我改变了顺序,结果成功了。:-)请不要参考w3schools,该网站充满了错误。使用ECMA-262或MDN。