2016-03-21 48 views
0

我想補充一天的日期,我從textbox.I得到嘗試下面的代碼日期,但沒有奏效增加一天的JavaScript

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

謝謝

+0

您是否嘗試過'renew_date.setDate(end_date.getDate()+ 1);'? –

+0

@Roland需要jquery,使用vanilla js並停止如此依賴jquery –

+0

如果你不反對圖書館並且不喜歡重新發明輪子,那麼moment.js是一個很棒的日期操作庫:http:// momentjs.com/。看起來你正在構建某種契約管理應用程序,我想你需要更多的日期操作操作,而不僅僅是這個。 – erictgrubaugh

回答

1

試試這個

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

+0

很好,謝謝你,但是86400000是什麼意思? –

+0

這是一天毫秒,在這裏瞭解更多http://www.w3schools.com/jsref/jsref_gettime.asp – C2486

0

設置日期的行爲是內部的,所以如果你設置一個日期到「日期」+ 1,如果需要,它會自動影響數月甚至數年。

而且Date對象是可變的,這意味着這樣就足夠了:

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

您可以通過添加86,400,000ms增加1天( 1天)到當前日期。

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

你可以支持其他日期的間隔像這樣:

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();
<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="" />