添加日期jquery或JS

时间:2017-11-15 07:08:56

标签: javascript jquery

我有一个选择从'dd / mm / yy'格式的输入中添加天数以在另一个输入中显示结果,我试图这样做但这不起作用。

<input type="text" id="startdate" value="15/11/17"> 

<select name="Select1" id="days">
<option value="1">1 day</option>
<option value="2">2 days</option>
<option value="3">3 days</option>
</select>

<input type="text" id="fdate" value="">

$( "#days" ).change(function() {
var sta = $('#startdate').val()
var sel = parseInt($(this).val())
$('#fdate').val(sta+sel )
});

6 个答案:

答案 0 :(得分:1)

使用setDateadd the days

<强>演示

$("#days").change(function() {
  var staItems = $('#startdate').val().split("/");
  var date = new Date(  Number(staItems[2]), Number(staItems[1])-1, Number(staItems[0]) );
  date.setDate( date.getDate() + parseInt($(this).val()) );
  $('#fdate').val( date.getDate() + "/" + (date.getMonth() + 1 ) + "/" + date.getYear() )
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" id="startdate" value="15/11/17">

<select name="Select1" id="days">
<option value="0">0 day</option>
<option value="1">1 day</option>
<option value="2">2 days</option>
<option value="3">3 days</option>
<option value="6">6 days</option>
<option value="7">7 days</option>
<option value="8">8 days</option>
</select>

<input type="text" id="fdate" value="">

答案 1 :(得分:1)

您应该使用Date javascript对象

$( "#days" ).change(function() {
    var sta = $('#startdate').val().split('/');
    // Note that JS treats date as  mm/dd/yy
    var date = new Date([sta[1], sta[0], sta[2]].join('/'));
    var sel = parseInt($(this).val());
    date = new Date(date.getTime() + 60*60*24*sel);
    $('#fdate').val(date.getDaty() + '/' + date.getMonth() + '/' + date.getYear());
});

另外请考虑将年份显示更改为全年,原因相同[{3}}

答案 2 :(得分:1)

试试这个......

$( "#days" ).change(function() {

var dates = $('#startdate').val();
dates = dates.split('/');
var someDate = new Date(dates[1] +"/" + dates[0] + "/"+dates[2]);
var numberOfDaysToAdd = parseInt($(this).val());
someDate.setDate(someDate.getDate() + numberOfDaysToAdd);
var dd = someDate.getDate();
var mm = someDate.getMonth() + 1;
var y = someDate.getFullYear();

var someFormattedDate = dd + '/'+ mm + '/'+ y;
$('#fdate').val(someFormattedDate);


});

答案 3 :(得分:1)

问题:

  • 您的开始日期未解析为日期,因此您无法对其进行任何操作
  • 然后您将字符串添加到表示要添加的日期的整数:'15/11/17' + 3。这不会起作用

解决方案:

我强烈建议您查看momentJS

$('#days').change(function() {
  var sta = moment($('#startdate').val(), "MM-DD-YY");
  var sel = parseInt($(this).val());
  $('#fdate').val(sta.add(sel, 'days'));
});

答案 4 :(得分:1)

输入“#startdate”具有文本类型,如果您将“整数”相加,则结果不是您的目标。

您需要在第一个输入中使用type date,将其值转换为Date对象,并使用正确的函数添加一天。

Here您有关于Date对象的更多信息。

答案 5 :(得分:1)

纯粹的js方法 分开日期,得到一天, 拆分选定的值,得到整数 加上两个 使用更新日期再次创建日期 在输入框中更新它

   document.getElementById("days").onchange = function() {
        let inputValueParts = document.getElementById("startdate").value.split("/");
        let daysToIncrement = document.getElementById("days").value.split(" ")[0];    
        let integerDate = parseInt(inputValueParts[1]);
        let integerIncrement = parseInt(daysToIncrement);
        integerDate += integerIncrement;
        let increasedDate = inputValueParts[0] + "/" + integerDate + "/" +inputValueParts[2];
        document.getElementById("fdate").value = increasedDate;
    }