添加1天后的日期发布

时间:2016-03-31 10:03:08

标签: javascript jquery date

日期时我有一个逻辑问题。

    Date:<input id="txtDate" type="text" />
<input type="button" onclick="getdate()" value="Fill Follow Date" />
Follow Date:<input id="follow_Date" type="text" />

添加脚本

    $(document).ready(function () {
    $('#txtDate').datepicker();
    $('#follow_Date').datepicker();
});

function getdate() {
    var tt = document.getElementById('txtDate').value;

    var date = new Date(tt);
    var newdate = new Date(date);

    newdate.setDate(newdate.getDate());

    var dd = newdate.getDate()+1;
    var mm = newdate.getMonth()+1;
    var y = newdate.getFullYear();

    var someFormattedDate = dd + '-' + mm + '-' + y;
    document.getElementById('follow_Date').value = someFormattedDate;
}

今天&#34; 31-03-2016&#34;以下日期显示&#34; 32-03-2016&#34;。但它显示了01-04-2016。你有任何其他逻辑来克服这个错误。 我们有像#34; makemytrips&#34;酒店页面。 makemytrip.com/hotels在这里你可以看到nigths的数量。我用于我网站的相同概念

3 个答案:

答案 0 :(得分:1)

您没有添加日期,而是添加数字。 getDate()返回字符串数字值31,如果你加1,你将获得32,这是错误的,然后你正在做一个字符串连接导致问题。

相反,您可以使用datepickerDate apis

$(document).ready(function() {
  var $date = $('#txtDate').datepicker();
  var $follow = $('#follow_Date').datepicker();
  $('#fill-follow').click(function() {
    var date = $date.datepicker('getDate');
    if (date) {
      date.setDate(date.getDate() + 1);
      //date.setMonth(date.getMonth() + 1);
      $follow.datepicker('setDate', date)
    }
  });
});
<link href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.11.4/themes/redmond/jquery-ui.css" rel="stylesheet" />
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.js"></script>
<script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.11.4/jquery-ui.js"></script>
Date:
<input id="txtDate" type="text" />
<input type="button" id="fill-follow" value="Fill Follow Date" />Follow Date:
<input id="follow_Date" type="text" />

答案 1 :(得分:0)

您需要在getDate()结果中添加1,然后在其上调用setDate()

function getdate() {
    var tt = document.getElementById('txtDate').value;

    var date = new Date(tt);
    var newdate = new Date(date);

    newdate.setDate(newdate.getDate() + 1);

    var dd = newdate.getDate();
    var mm = newdate.getMonth() + 1;
    var y = newdate.getFullYear();

    var someFormattedDate = dd + '-' + mm + '-' + y;
    document.getElementById('follow_Date').value = someFormattedDate;
}

另外,阅读你的代码,我想知道你为什么要创建两次日期:

    var date = new Date(tt);
    var newdate = new Date(date);

你不能将这些组合成一行吗?

    var newdate = new Date(tt);

答案 2 :(得分:0)

使用下面的逻辑

var someDate = new Date();
var numberOfDaysToAdd = 6;
someDate.setDate(someDate.getDate() + numberOfDaysToAdd);

格式化日期:

var dd = someDate.getDate();
var mm = someDate.getMonth() + 1;
var y = someDate.getFullYear();

var someFormattedDate = dd + '/'+ mm + '/'+ y;