3

我正在尝试获取日期并对其进行修改这是代码

           <script type="text/javascript">
           $(function() { 
            $("#terms_of_payment").change(function(){ 
                 var element = $(this).find('option:selected'); 
                 var days = element.attr("value"); 
                 var start = $('input[name="date"]').val();
                 var date = new Date(start);
                      var day = date.getDate() + days;
                      var month = date.getMonth();
                      var year = date.getFullYear();
                var edate = day + "-" + month +  "-" + year;
               alert(start);
               alert(edate);
               $('#due_date').val(edate); 
              }); 
              });
              </script>

它给出了正确的开始日期,但是当尝试添加它时,它只是给了我错误的月份和日期,,,,,请帮助

这是html

            <div class="form-item">
            <label>
                <span class="required">*</span>
               date
            </label>

              <input type="text" readonly="readonly" value="" id="date" name="date" class="hasDatepicker">            
          </div>
           <div class="form-item">
            <label>
              due date
            </label>  
                 <input type="text" disabled="disabled" value="" id="due_date" name="due_date">               </div>
               <div class="form-item">
              <label>
                <span class="required">*</span>
                terms-of-oayment
                </label>

                <select class="" id="terms_of_payment" name="terms_of_payment">
                <option selected="selected" label="---------" value="">---------     
                </option>
                <option label="مستحقة الدفع لدى تسلمها" value="1">مستحقة الدفع لدى تسلمها</option>
                 <option label="مستحقة الدفع في غضون 15 يوما" value="15">مستحقة الدفع في غضون 15 يوما</option>
                 <option label="مستحقة الدفع في غضون 30 يوما" value="30">مستحقة الدفع في غضون 30 يوما</option>
                  <option label="مستحقة الدفع في غضون 45 يوما" value="45">مستحقة الدفع في غضون 45 يوما</option>
                   <option label="مستحقة الدفع في غضون 60 يوما" value="60">مستحقة الدفع في غضون 60 يوما</option>
                   <option label="مستحقة الدفع في غضون 90 يوما" value="90">مستحقة الدفع في غضون 90 يوما</option>
              </select>
                   </div>
4

2 回答 2

3

尝试像这样生成新日期:

var edate = new Date(date.getTime() + days *24*60*60*1000);

另请参阅向 JavaScript Date 添加天数

于 2012-05-05T18:13:48.227 回答
3

这里有两个问题:

  1. .getMonth()返回 0 到 11,而不是 1 到 12。请参阅http://www.w3schools.com/jsref/jsref_getmonth.asp

  2. 例如,假设日期是 2012 年 1 月 31 日,而您要添加一天。你会得到 2012 年 1 月 32 日。

从理论上讲,你会更成功地选择像 Julian date 这样的东西,然后添加天数。或者将http://www.datejs.com/视为一个很棒的库,用于在 JavaScript 中进行日期数学、格式化和解析。

于 2012-05-05T18:14:34.343 回答