如何将31天添加到用户输入的日期

时间:2017-10-13 20:56:26

标签: javascript date

所以我正在尝试制作一个句号计数器(陈词滥调),而且我也是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;

2 个答案:

答案 0 :(得分:0)

肯定是重复但是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.

和for funsies

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

答案 1 :(得分:0)

您不应使用内置解析器。而不是构建一个字符串,将它提供给一个不可靠的解析器并希望得到一致的结果,只需将这些部分直接提供给Date构造函数。

此外, setDate 会修改日期,因此无需 fstart



function theDate() {
  var y = document.getElementById("inyear").value;
  var m = document.getElementById("inmonth").value;
  var d = document.getElementById("inday").value;

  var nd = new Date(y, m-1, d);
  document.getElementById("enddate").innerHTML = "Last Period End Date: " + nd.toString();

  var thirtyDaysLater = 31;
  nd.setDate(nd.getDate() + thirtyDaysLater);
  document.getElementById("nextdate").innerHTML = "Next Period Start Date: " + nd.toString();
}

Day: <input id="inday" value="5"><br>
Month: <input id="inmonth" value="10"><br>
Year: <input id="inyear" value="2017"><br>
<button onclick="theDate()">Calculate</button>
<p id="enddate">
<p id="nextdate">
&#13;
&#13;
&#13;

这不会对输入进行任何验证,您可能需要添加它。