关于datetime:添加日期javascript

add day to date javascript

本问题已经有最佳答案,请猛点这里访问。

我想添加一个我从textbox获得的日期。我尝试了下面的代码,但它没有用

1
2
3
4
5
6
7
8
9
10
11
    function get_renew_date ()
    {
        var chkautorenew=document.getElementById("MainContent_chk_Isauto_Renew");
        if (chkautorenew.checked) {
            end_date = document.getElementById("MainContent_txtContract_End_date").value;
            renew_date = document.getElementById("MainContent_txtContract_Renew").value;
            dat = new Date(end_date.toDateString());
            //renew_date=dat.addDays(1);
            alert(end_date.toDateString());
        }
     }

我也担心客户日期格式和月份的最后一天,我怎么能确定在添加一天之后它不会像这个32/03/2016

谢谢


试试这个

1
2
3
var date1 = new Date("03/31/2016");
var next_date = new Date(date1.getTime() + 86400000);
alert(next_date.toLocaleDateString());


您可以通过将86,400,000毫秒(1天)添加到当前日期来添加一天。

1
2
3
function addDays(date, numOfDays) {
  date.setTime(date.getTime() + (86400000 * numOfDays));
}

您可以支持其他日期间隔,如下所示:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
function dateAdd(date, interval, units) {
  var d = new Date(date);
  switch (interval.toUpperCase()) {
    case 'YEAR'   :  d.setFullYear ( d.getFullYear() + units           ); break;
    case 'QUARTER':  d.setMonth    ( d.getMonth()    + units * 3       ); break;
    case 'MONTH'  :  d.setMonth    ( d.getMonth()    + units           ); break;
    case 'WEEK'   :  d.setDate     ( d.getDate()     + units * 7       ); break;
    case 'DAY'    :  d.setDate     ( d.getDate()     + units           ); break;
    case 'HOUR'   :  d.setTime     ( d.getTime()     + units * 3600000 ); break;
    case 'MINUTE' :  d.setTime     ( d.getTime()     + units * 60000   ); break;
    case 'SECOND' :  d.setTime     ( d.getTime()     + units * 1000    ); break;
    default       :  d             = undefined                          ; break;
  }
  return d;
}

function parseDate(dateString, delimiter) {
  var parts = dateString.split(delimiter).map(function(v) {
    return parseInt(v, 10);
  });
  return new Date(parts[2], parts[1], parts[0]);
}

function formatDate(date, delimiter) {
  return [ date.getDate(), date.getMonth(), date.getFullYear() ].map(function(v) {
    return v < 10 ? ('0' + v) : v;
  }).join(delimiter);
}

function get_renew_date() {
  var chkautorenew = document.getElementById("MainContent_chk_Isauto_Renew");
  if (chkautorenew.checked) {
    end_date = document.getElementById("MainContent_txtContract_End_date").value;
    renew_date = formatDate(dateAdd(parseDate(end_date, '/'), 'day', 1), '/');
    document.getElementById("MainContent_txtContract_Renew").value = renew_date;
  }
}

get_renew_date();
1
2
3
4
<input type="checkbox" id="MainContent_chk_Isauto_Renew" checked />

<input type="text" id="MainContent_txtContract_End_date" value="31/03/2016" />
<input type="text" id="MainContent_txtContract_Renew" value="" />


设置日期的行为是内部的,因此如果您将日期设置为"日期"+ 1,如果需要,它将自动影响数月甚至数年。

Date对象也是可变的,这意味着这样就足够了:

1
2
dat = new Date(end_date.toDateString());
dat.setDate(dat.getDate() + 1);