Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/383.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/3/html/88.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(html)中无法正确显示月份的日期_Javascript_Html - Fatal编程技术网

在javascript(html)中无法正确显示月份的日期

在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

这是我的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 + 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需要转换为数字,已修复。