Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/82.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
在jQuery中将天添加到给定日期_Jquery_Date - Fatal编程技术网

在jQuery中将天添加到给定日期

在jQuery中将天添加到给定日期,jquery,date,Jquery,Date,我有一个包含三个字段的表单,“开始日期”、“天数”、“结束日期”。我想通过在开始日期上添加天来获得结束日期 我的jQuery代码是: $("#days").change(function(){ var start_date = new Date($("#start_date").attr('value')); var days = parseInt($("#days").attr('value'))-1; var end_date = new Date(start_date);

我有一个包含三个字段的表单,“开始日期”、“天数”、“结束日期”。我想通过在开始日期上添加天来获得结束日期

我的jQuery代码是:

$("#days").change(function(){
  var start_date = new Date($("#start_date").attr('value'));
  var days = parseInt($("#days").attr('value'))-1;
  var end_date = new Date(start_date);
  end_date.setDate(start_date.getDate() + days);                            
  $("#end_date").val(end_date.getFullYear() + '-' + ("0" + (end_date.getMonth() + 1)).slice(-2) + '-' + ("0" + end_date.getDate()).slice(-2));
});
在“结束日期”字段中,我得到“南安”


我做错了什么?

NaN代表
不是一个数字
-这意味着用户输入无效

您可以使用
if(!isNaN(date.getTime()){

一些代码可以帮助您开始:

;(function($, window, document, undefined){
    $("#days").on("change", function(){
       var date = new Date($("#start_date").val()),
           days = parseInt($("#days").val(), 10);

        if(!isNaN(date.getTime())){
            date.setDate(date.getDate() + days);

            $("#end_date").val(date.toInputFormat());
        } else {
            alert("Invalid Date");  
        }
    });


    //From: http://stackoverflow.com/questions/3066586/get-string-in-yyyymmdd-format-from-js-date-object
    Date.prototype.toInputFormat = function() {
       var yyyy = this.getFullYear().toString();
       var mm = (this.getMonth()+1).toString(); // getMonth() is zero-based
       var dd  = this.getDate().toString();
       return yyyy + "-" + (mm[1]?mm:"0"+mm[0]) + "-" + (dd[1]?dd:"0"+dd[0]); // padding
    };
})(jQuery, this, document);

希望这有帮助


W

您在
开始日期
字段中得到了什么?正如我在问题中所说的,我得到了NaN。如果您的问题说您在
结束日期
中得到NaN,我会问您在
开始日期
中得到了什么(如果它也是NaN,那是因为
开始日期
的值不代表有效的日期格式)开始日期由用户完成。其格式为YYYY-MM-DD。
开始日期
不是由用户完成的,它是基于用户数据初始化的javascript日期()对象。请添加
console.log(开始日期)
然后看看它的值是什么。嗨,WG,我发现它是合乎逻辑的,但我不知道为什么它给了我无效的日期,因为当我将字符串日期传递给新的日期()时,它不会创建一个新的。这个问题有什么解决方案吗?当您使用日期格式(如2018年2月15日)时,如何提供或添加天数在该值中添加3天,并获得2018年2月18日的结果