【问题标题】:Adding days to given date in jQuery [duplicate]在jQuery中为给定日期添加天数[重复]
【发布时间】:2014-07-14 06:49:53
【问题描述】:

我有一个包含三个字段的表单,“start_date”、“days”、“end_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));
});

在“end_date”字段中,我得到“NaN-aN-aN”。

我做错了什么?

【问题讨论】:

  • 你在start_date字段中得到了什么?
  • 正如我在问题中所说,我得到 NaN-aN-aN
  • 你的问题说你在end_date 中得到了 NAN,我在问你在 start_date 中得到了什么(如果它也是 NAN,那是因为 #start_date 的值不代表有效日期格式)
  • start_date 由用户完成。其格式为 YYYY-MM-DD。
  • start_date 不是由用户完成的,它是一个基于用户数据初始化的 javascript Date() 对象。请添加console.log(start_date);,看看它的值是多少。

标签: jquery date


【解决方案1】:

NaN 代表Not a Number - 这意味着用户输入无效。

您可以使用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);

http://jsfiddle.net/MCzJ6/1

希望这会有所帮助。

W

【讨论】:

  • 您好 WG,我发现它合乎逻辑,但我不知道为什么它给了我无效的日期,因为当我将字符串日期传递给新的 Date() 时,它不会创建一个新的日期。这个问题有解决办法吗?
  • 当您的日期格式类似于 Thu 15/02/2018 时,如何提供或添加天数在此值中添加 3 天并获得结果 Sun 18/2/2018
猜你喜欢
  • 1970-01-01
  • 2014-04-27
  • 1970-01-01
  • 2017-07-04
  • 1970-01-01
  • 1970-01-01
  • 2012-10-25
  • 2022-12-05
  • 1970-01-01
相关资源
最近更新 更多