JavaScript getDate()在添加和减去时没有正确调整日期

时间:2014-01-12 10:44:32

标签: javascript asp.net

我有一个JavaScript函数,可以在单击按钮时调整日期。它使用getDate()函数,并从文本框中当前日期值开始7天后减去。我看到的问题,我已经尝试了各种方法来纠正,但似乎没有什么工作是当我点击按钮它显示正确的日期,当我再次点击它而不是回去另外七天它跳到一个完全不同的日期 - 例如,如果文本框中的日期是05/01/2014,我单击它去往2014年12月29日的按钮,我再次点击它,我得到28/11/2015 - 不是22/12 / 2014。

这是我的JavaScript代码:

   var fromDateIn = new Date(formatDate(document.getElementById('<%= txtFromDate.ClientID%>').value));
      var newdate = new Date(fromDateIn);
      newdate.setDate(newdate.getDate() - 7);
      var nd = new Date(newdate);

      document.getElementById('<%= txtFromDate.ClientID%>').value = formatDate(nd);

     function formatDate(inputDate) {

      var d = new Date(inputDate || Date.now()),
    month = '' + (d.getMonth() + 1),
    day = '' + d.getDate(),
    year = d.getFullYear();

      if (month.length < 2) month = '0' + month;
      if (day.length < 2) day = '0' + day;

      return [day, month, year].join('/');

  }

有人可以向我指出我如何能够从文本框中的当前日期值继续减去7天吗?

由于

1 个答案:

答案 0 :(得分:0)

您的问题是您使用格式化日期来构建新的fromDateIn

在加载时初始化值,并使用newdate变量进行计算,在单击按钮时调用函数changeDate()

var fromDateIn = new Date(formatDate(document.getElementById('<%=txtFromDate.ClientID%>').value));
var newdate = new Date(fromDateIn);

function changeDate() 
{
   newdate.setDate(newdate.getDate() - 7);
   document.getElementById('<%= txtFromDate.ClientID%>').value = formatDate(newdate);
}

function formatDate(inputDate) 
{        
   var d = new Date(inputDate || Date.now()),
   month = '' + (d.getMonth() + 1),
   day = '' + d.getDate(),
   year = d.getFullYear();

   if (month.length < 2) month = '0' + month;
   if (day.length < 2) day = '0' + day;        
   return [day, month, year].join('/');        
}