Сложение дат
Чтобы прибавить к дате нужное количество дней
<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>
Комментариев нет: