Сложение дат
Чтобы прибавить к дате нужное количество дней
<input type="button" value="пример" onclick="dni()"> <script> function dni() { var D = new Date(1999,11,31); D.setDate(D.getDate() + 3); alert(D); } </script>
Чтобы прибавить к дате нужное количество месяцев
<input type="button" value="пример" onclick="month()"> <script> function month() { var D = new Date(1999,11,31); D.setMonth(D.getMonth() + 3); alert(D); } </script>
Чтобы прибавить к дате нужное количество лет
<input type="button" value="пример" onclick="year()"> <script> function year() { var Dy = new Date(1999,11,31); Dy.setFullYear(Dy.getFullYear() + 3); alert(Dy); } </script>
Сложение лет, месяцев, дней
Август | ||||||
Пн | Вт | Ср | Чт | Пт | Сб | Вс |
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 |
Сентябрь | ||||||
Пн | Вт | Ср | Чт | Пт | Сб | Вс |
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 |
До 1 октября 33 дня или 1 месяц 3 дня (в сентябре 30 дней). Но скрипт считает что спустя 1 месяц 2 дня также наступит 1 октября.
var T = new Date(2016,7,29); T.setDate(T.getDate() + 2); // 31 августа T.setMonth(T.getMonth() + 1); // 1 октября var T = new Date(2016,7,29); T.setMonth(T.getMonth() + 1); // 29 сентября T.setDate(T.getDate() + 2); // 1 октября var T = new Date(2016,7,29); T.setDate(T.getDate() + 3); // 1 сентября T.setMonth(T.getMonth() + 1); // 1 октября var T = new Date(2016,7,29); T.setMonth(T.getMonth() + 1); // 29 сентября T.setDate(T.getDate() + 3); // 2 октября
Поскольку вначале прибавляется месяц, а затем число, так делать нежелательно:
+ лет + месяцев + дней =<input type="date" class="raz4"> + <input type="number" value="0" class="raz4"> лет + <input type="number" value="0" class="raz4"> месяцев + <input type="number" value="0" class="raz4"> дней = <output class="raz4"></output> <script> function intF1(e) { return e.getFullYear() + "-" + ('0' + (e.getMonth() + 1)).slice(-2) + "-" + ('0' + e.getDate()).slice(-2); } var raz = document.querySelectorAll('.raz4'); raz[0].value = intF1(new Date()); raz[4].value = intF1(new Date()); for (var i=0; i<raz.length; i++) { raz[i].oninput = function() { var D = new Date(raz[0].value); D.setFullYear(D.getFullYear() + parseFloat(raz[1].value), D.getMonth() + parseFloat(raz[2].value), D.getDate() + parseFloat(raz[3].value)); raz[4].innerHTML = intF1(D); } } </script>
Аналогично с
часы | getHours() | setHours() |
---|---|---|
минуты | getMinutes() | setMinutes() |
секунды | getSeconds() | setSeconds() |
миллисекунды | getMilliseconds() | setMilliseconds() |
Аналогично с вычитанием
.toJSON и 00:00:00
Нужно учитывать разницу между местным и UTC-временем. То есть не , а
<input type="button" value="пример1" onclick="raz1()"> <input type="button" value="пример2" onclick="raz2()"> <script> function raz1() { var Dfrom = new Date(); alert(Dfrom.toJSON().slice(0,10)); Dfrom = new Date(Dfrom.getFullYear(), Dfrom.getMonth(), Dfrom.getDate()); alert(Dfrom.toJSON().slice(0,10)); } function raz2() { var Dfrom = new Date(); alert(Dfrom.toJSON().slice(0,10)); Dfrom.setHours(0, new Date().getTimezoneOffset()*-1, 0, 0); alert(Dfrom.toJSON().slice(0,10)); } </script>
Комментариев нет: