2016-03-21 7 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, это автоматически повлияет на месяцы или даже годы, если потребуется.

Также объект Дата изменчиво, что означает, делая это достаточно:

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

Вы можете добавить день, добавив 86,400,000ms (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="" />

Смежные вопросы