2016-03-31 156 views
1

我有一个逻辑问题,而日期。在添加1天后添加日期

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; 
} 

对于今天 “31-03-2016” 后续日期显示 “32-03-2016”。但它展示了01-04-2016。你有任何其他的逻辑来解决这个错误。 我们有像“makemytrips”酒店页面的选项。 makemytrip.com/hotels在这里你可以看到多少个夜晚。同样的概念我用于我的网站

+0

只是'newdate.setDate(newdate.getDate()+ 1);'不要添加它以后.. – Rayon

+0

不要使用Date构造函数来解析字符串,这是非常不可靠的。手动解析字符串,使用库或[*简单函数*](https://stackoverflow.com/questions/33908299/javascript-parse-a-string-to-date-as-local-time-zone/33909265# 33909265)。 – RobG

回答

1

你不是在做一个日期加法,而是一个数字加法。 getDate()返回 字符串 31的数字值如果您添加1,您将得到32,那有什么问题,那么你正在做一个字符串连接导致问题。

相反,你可以使用datepicker,并且Date的API

$(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" />

+0

雅人造丝。我们有像“makemytrips”酒店页面的选项。 http://www.makemytrip.com/hotels 在这里你可以看到多少个黑夜。同样的概念,我用于我的网站 –

+0

哇,3个图书馆一个非常简单的任务。在Chrome中,代码会抛出“$未定义”。 – RobG

+0

@RobG如果你看看这个问题,OP已经在使用jQuery UI ...所以为什么不使用这些API来完成任务 –

0

您需要1添加到getDate()结果,然后调用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); 
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;