在javascript(html)中无法正确显示月份的日期
这是我的javascript代码:在javascript(html)中无法正确显示月份的日期,javascript,html,Javascript,Html,这是我的javascript代码: function borrowbook () { var today = new Date(); var day = today.getDate(); var month = today.getMonth()+1; var year = today.getFullYear(); var input_day = document.getElementById("textbox").value; var newday = today.setDate(day
function borrowbook ()
{
var today = new Date();
var day = today.getDate();
var month = today.getMonth()+1;
var year = today.getFullYear();
var input_day = document.getElementById("textbox").value;
var newday = today.setDate(day + input_day);
var fulltime1 = newday + "-" + month + "-" + year;
alert ("Return Date is: " + fulltime1);
}
结果不是我预期的结果:
实际上,我想做的是,如果用户在“允许天数”中输入一个值,我想显示还书日期。但我不知道为什么每月的日期不能正确显示。有没有解决此问题的建议?当您这样做时:
var newday = today.setDate(day + input_day);
您正在将newday的值设置为today.setDate(…)的返回值,这是一个
由于*input_day*是表单控件的值,并且这些值始终是字符串,因此+
运算符将连接这些值,而不是添加它们
您可能想要的是日期,因此:
today.setDate(day + +input_day); // set the new date, converting input_date to Number
var newday = today.getDate(); // get the new date
此外,您还应在添加日期后获得月份和年份,因为这可能会改变它们的值:
31 May + 1 day -> 1 June
当您这样做时:
var newday = today.setDate(day + input_day);
您正在将newday的值设置为today.setDate(…)的返回值,这是一个
由于*input_day*是表单控件的值,并且这些值始终是字符串,因此+
运算符将连接这些值,而不是添加它们
您可能想要的是日期,因此:
today.setDate(day + +input_day); // set the new date, converting input_date to Number
var newday = today.getDate(); // get the new date
此外,您还应在添加日期后获得月份和年份,因为这可能会改变它们的值:
31 May + 1 day -> 1 June
有三件事你需要改变 这是一个正在工作的JSFIDLE。 首先,月份和年份也可能不正确。如果今天是2014年12月31日,您的代码将不会显示2014年1月10日,而是2013年12月10日。您可以通过获取续订日期后的日、月和年,而不是今天的日期来纠正此问题 其次,
input\u day
是一个字符串,因此需要使用内置javascript函数parseInt()
将其解析为整数
第三,Date
对象上的setDate()
方法不会返回新日期。这就是罗布的问题所在
新功能如下:
function borrowbook() {
var today = new Date();
var day = today.getDate();
var input_day = document.getElementById("textbox").value;
var returnDate = new Date();
returnDate.setDate(day + parseInt(input_day));
var returnDay = returnDate.getDate();
var returnMonth = returnDate.getMonth() + 1;
var returnYear = returnDate.getFullYear();
var fulltime1 = returnDay + "-" + returnMonth + "-" + returnYear;
alert ("Return Date is: " + fulltime1);
}
有三件事你需要改变 这是一个正在工作的JSFIDLE。 首先,月份和年份也可能不正确。如果今天是2014年12月31日,您的代码将不会显示2014年1月10日,而是2013年12月10日。您可以通过获取续订日期后的日、月和年,而不是今天的日期来纠正此问题 其次,
input\u day
是一个字符串,因此需要使用内置javascript函数parseInt()
将其解析为整数
第三,Date
对象上的setDate()
方法不会返回新日期。这就是罗布的问题所在
新功能如下:
function borrowbook() {
var today = new Date();
var day = today.getDate();
var input_day = document.getElementById("textbox").value;
var returnDate = new Date();
returnDate.setDate(day + parseInt(input_day));
var returnDay = returnDate.getDate();
var returnMonth = returnDate.getMonth() + 1;
var returnYear = returnDate.getFullYear();
var fulltime1 = returnDay + "-" + returnMonth + "-" + returnYear;
alert ("Return Date is: " + fulltime1);
}
setDate方法愉快地接受字符串,问题是重载的
+
运算符和字符串值+1谢谢你。这很有效,非常感谢:)但是我有一个问题,是什么原因使得“input_day”是一个字符串?@user3310635–input_day是表单控件的值,它们总是字符串。RobG做了一些很好的澄清。正如他所说,input_day是表单控件的值,无论类型如何,它们始终是字符串。请参阅Thank@robg setDate方法愉快地接受字符串,问题是重载的+
运算符和字符串值+1谢谢你。这很有效,非常感谢:)但是我有一个问题,是什么原因使得“input_day”是一个字符串?@user3310635–input_day是表单控件的值,它们总是字符串。RobG做了一些很好的澄清。正如他所说,input_day是表单控件的值,无论类型如何,它们始终是字符串。请参阅Thank@RobGinput\u day需要转换为数字,已修复。input\u day需要转换为数字,已修复。