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 如何在用户输入的日期上增加31天_Javascript_Date - Fatal编程技术网

Javascript 如何在用户输入的日期上增加31天

Javascript 如何在用户输入的日期上增加31天,javascript,date,Javascript,Date,所以我正在尝试做一个句点计数器(陈词滥调),我也是HTML和Javascript的初学者,请耐心听我说。我这样做是为了用户可以输入他们的周期开始的日期,我想在他们输入的天数中加上31天,这样就可以作为一个日期。 到目前为止,我的剧本是: function theDate() { var m = document.getElementById("inmonth").value; Number(m).toString(); var d = document.getElementById("ind

所以我正在尝试做一个句点计数器(陈词滥调),我也是HTML和Javascript的初学者,请耐心听我说。我这样做是为了用户可以输入他们的周期开始的日期,我想在他们输入的天数中加上31天,这样就可以作为一个日期。 到目前为止,我的剧本是:

  function theDate() {
var m = document.getElementById("inmonth").value;
Number(m).toString();
var d = document.getElementById("inday").value;
var y = document.getElementById("inyear").value;
var nd = new Date(m + "/" + d + "/" + y);
var thirtyDaysLater = 31;
var fstart = nd.setDate(nd.getDate() + thirtyDaysLater);
document.getElementById("enddate").innerHTML = "Last Period End Date: " + 
nd;
document.getElementById("nextdate").innerHTML = "Next Period Start Date: " + 
fstart;

当然是重复的,但是setDate会返回一个数字(X经过后的秒数)并修改日期,所以您需要这样做

 // After setting nd and thirty days later
 var fstart = new Date(nd); //copy the date

 fstart.setDate(fstart.getDate() + thirtyDaysLater);
 // Now fstart contains the modified date and nd contains the initial one.
从那里你可以随心所欲地使用

总之

var a = new Date(b) // date Object a copy of b
a.setDate(num) // Returns a number (which identifies the date) and modifies a
b = new Date(a.setDate(num)) // a is modified, b is now a copy of a.
为了好玩

// a contains the current date  - 30 days (it properly accounts for months)
var a = new Date(new Date().setDate(new Date().getDate() - 30));

您不应该使用内置解析器。与其构建一个字符串,将其交给一个不可靠的解析器并希望得到一致的结果,不如直接将部分交给日期构造函数

此外,setDate会修改当前的日期,因此无需fstart:

函数的日期(){
var y=document.getElementById(“inyear”).value;
var m=document.getElementById(“inmonth”).value;
var d=document.getElementById(“inday”).value;
var nd=新日期(y,m-1,d);
document.getElementById(“enddate”).innerHTML=“最后一个期间结束日期:”+nd.toString();
var thirtyDaysLater=31;
nd.setDate(nd.getDate()+ThirtySlater);
document.getElementById(“nextdate”).innerHTML=“下一期开始日期:”+nd.toString();
}
日期:
月份:
年份:
算计


可能重复的@kyle不是真正的重复,OP的主要问题是setDate的意外返回。使用内置解析器也是一个问题,但在本例中不会造成问题。