所以我正在尝试制作一个句号计数器(陈词滥调),而且我也是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;
答案 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;
这不会对输入进行任何验证,您可能需要添加它。