Форум программистов, компьютерный форум, киберфорум
JavaScript для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
-11 / 6 / 0
Регистрация: 23.02.2023
Сообщений: 431

Как к дате добавить "n" дней?

24.01.2024, 19:22. Показов 11341. Ответов 171
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
есть какая то дата например 10.02.2024, надо получить несколько дат,

дата1 = дата + 5 дней

дата2 = дата + 73 дня

дата3 = дата - 19 дней

дата4 = дата - 75 дней

как это сделать?

Добавлено через 7 минут
PHP/HTML
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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
<!DOCTYPE HTML>
<html lang="ru-RU">
<head>
    <meta charset="UTF-8">
    <title>Chinese Zodiac</title>
    <style>
        @import url(https://db.onlinewebfonts.com/c/20a04794234e8f0981f0400c51ba02cd?family=OpticalBDB+Normal);orUse font-face declaration Fonts.(http | https)
        @font-face {
        font-family: "OpticalBDB Normal";
        src: url("https://db.onlinewebfonts.com/t/20a04794234e8f0981f0400c51ba02cd.eot");
        src: url("https://db.onlinewebfonts.com/t/20a04794234e8f0981f0400c51ba02cd.eot?#iefix")format("embedded-opentype"),
        url("https://db.onlinewebfonts.com/t/20a04794234e8f0981f0400c51ba02cd.woff2")format("woff2"),
        url("https://db.onlinewebfonts.com/t/20a04794234e8f0981f0400c51ba02cd.woff")format("woff"),
        url("https://db.onlinewebfonts.com/t/20a04794234e8f0981f0400c51ba02cd.ttf")format("truetype"),
        url("https://db.onlinewebfonts.com/t/20a04794234e8f0981f0400c51ba02cd.svg#OpticalBDB Normal")format("svg");
        }
        
        #desiredDate {
            outline: none;
            background-color: hsl(120,100%,97%);
            color: hsl(120,100%,25%);
            border: 1px solid hsl(120,100%,25%);
            border-radius: 15px/10px;
            font: bold 24px serif;
            padding: 5px 20px;
            margin-bottom: 20px;
            letter-spacing: 3px;
            font-family: "OpticalBDB Normal";
            
        }
        #info {
            white-space: nowrap;
            background-color: hsl(120,100%,98%);
            color: hsl(120,100%,25%);
            border: 1px solid hsl(120,100%,30%);
            border-radius: 15px/10px;
            font: bold 16px serif;
            padding: 10px 20px;
        }
    </style>
</head>
<body>
 
<input type="date" id="desiredDate" min="1863-01-01" max="2299-12-31" />
<br/>
<div id="info"></div>
 
  <script>
    var listColors = [
      "зелёно", "зелёно", "красно", "красно", "жёлто", "жёлто", "бело", "бело", "сине", "сине"];
    var listEnd = [
      "й", "го", "го", "го","го", "й","й", "й", "й", "го", "й", "й"];
    var listAnimal = [
      "крысы", "быка", "тигра", "кролика", "дракона", "змеи", "лошади", "козы", "обезьяны", "петуха", "собаки", "свиньи" ];
    var dates = [
      { month: "01",
        day: [
          {"21":
            ["1890", "1966"] },
          {"22":
            ["1879", "1898", "1909", "1947", "2004", "2023", "2042"] },
          {"23":
            ["1917", "1928", "1974", "1993", "2012", "2031"] },
          {"24":
            ["1887", "1936", "1955", "2001", "2039"] },
          {"25":
            ["1868", "1906", "1925", "1944", "1963", "1982", "2020"] },
          {"26":
            ["1876", "1895", "1914", "1933", "2009", "2028"] },
          {"27":
            ["1865", "1941", "1952", "1971", "1990"] },
          {"28":
            ["1884", "1922", "1960", "1979", "1998", "2017", "2036"] },
          {"29":
            ["1873", "1903", "1949", "1987", "2006", "2025"] },
          {"30":
            ["1881", "1892", "1911", "1930", "1968", "2044"] },
          {"31": 
            ["1870", "1889", "1900", "1938", "1957", "1976", "1995", "2014", "2033"] },
            ]
        },
        { month: "02",
          day: [
          {"1":
            ["1919", "2003", "2022", "2041"] },
          {"2":
            ["1878", "1897", "1908", "1927", "1946", "1965", "1984"] },
          {"3":
            ["1916", "1954", "1973", "2011", "2030"] },
          {"4":
            ["1886", "1905", "1935", "1992", "2038"] },
          {"5":
            ["1867", "1924", "1943", "1962", "1981", "2019"] },
          {"6":
            ["1875", "1894", "1913", "1932", "1951", "1970", "1989", "2027"] },
          {"7":
            ["1978", "1997", "2008"] },
          {"8":
            ["1864", "1883", "1902", "1921", "1940", "1959", "2016", "2035"] },
          {"9":
            ["1872", "1891", "1967", "1986", "2005"] },
          {"10":
            ["1880", "1899", "1910", "1929", "1948", "1994", "2013", "2024", "2043"] },
          {"11":
            ["1869", "1918", "1937", "1975", "2032"] },
          {"12":
            ["1888", "1956", "2021", "2040"] },
          {"13":
            ["1877", "1896", "1907", "1926", "1945", "1964", "1983", "2029"] },
          {"14":
            ["1915", "1934", "1953", "2010"] },
          {"15":
            ["1866", "1885", "1942", "1961", "1972", "1991", "2037"] },
          {"16":
            ["1904", "1923", "1980", "1999", "2018"] },
          {"17":
            ["1874", "1893", "1931", "1950", "1969", "1988", "2026"] },
          {"18":
            ["1863", "1882", "1912", "1958", "1977", "2007"] },
          {"19":
            ["1871", "1901", "1939", "1996", "2015", "2034"] },
          {"20":
            ["1920", "1985"] },
            ]
        }
    ];
 
   function srch(arr, dat) {
     var p = dat.split('-')[0];
       function run(a, z, b) {
         if(b.length === 6) return b;
           for(var i = 0; i < a.length; i++) {
             for(var j = 0; j < a[i].day.length; j++) {
               for(var o in a[i].day[j]) {
                 for(var r = 0; r < a[i].day[j][o].length; r++) {
                  if(a[i].day[j][o][r] == z) {
                    b.push(o, a[i].month, z);
                  return run(a, String(++p), b);
                }
              }
            }
          }
        }
      }
      return run(arr, p, []);
  }
 
function ChineseZodiac() {
  var result = srch(dates, this.value);
  var oneDataDay = parseInt(result[0]);
  var oneDataMonth = result[1];
  var oneDataYear = result[2];
  var endDataDay = parseInt(result[3]) - 1;
  var endDataMonth = result[4];
  var endDataYear = result[5];
 
  var oneData = oneDataDay + '.' + oneDataMonth + '.' + oneDataYear;
  var endData = endDataDay + '.' + endDataMonth + '.' + endDataYear;
  var cineseYear = oneData + '-' + endData;
 
  
  var currentDate = this.value ? new Date(this.value) : new Date();
  var currentYear = currentDate.getFullYear();
 
  var colorIndex = (currentYear - 1564) % 10;
  var color = listColors[colorIndex];
 
  var endIndex = (currentYear - 1564) % 12;
  var end = listEnd[endIndex];
 
  var animalIndex = (currentYear - 1564) % 12;
  var animal = listAnimal[animalIndex];
 
  var chineseNumYear = currentYear + 2697;
  var cycleNum = Math.floor(chineseNumYear / 60) + 1;
  var yearCycle = (chineseNumYear % 60 === 0 ? 6 : chineseNumYear % 60) + " год в 60-летнем цикле.";
 
  var infoElement = document.getElementById("info");
  infoElement.innerHTML = "год " + color + end + " " + animal + "." + "<br/>" + oneData + '-' + endData + "<br/>" + chineseNumYear + " г." + "<br/>" + cycleNum + " цикл" + "<br/>" + yearCycle;
}
 
 
    var input = document.getElementById('desiredDate');
 
    input.value = new Date().getFullYear() + '-' + ((new Date().getMonth() < 9) ? '0' : '') + (new Date().getMonth() + 1) + '-' + ((new Date().getDate() < 10) ? '0' : '') + new Date().getDate();
    input.addEventListener('change', ChineseZodiac);
    input.dispatchEvent(new Event('change'));
  </script>
 </body>
</html>
в этом скрипте получаем даты,

JavaScript
1
2
3
4
5
6
7
8
9
10
var result = srch(dates, this.value);
  var oneDataDay = parseInt(result[0]);
  var oneDataMonth = result[1];
  var oneDataYear = result[2];
  var endDataDay = parseInt(result[3]) - 1;
  var endDataMonth = result[4];
  var endDataYear = result[5];
 
  var oneData = oneDataDay + '.' + oneDataMonth + '.' + oneDataYear;
  var endData = endDataDay + '.' + endDataMonth + '.' + endDataYear;
как дальше получить даты национальных китайских праздников, +/- дней от этих дат?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
24.01.2024, 19:22
Ответы с готовыми решениями:

Добавить 7 дней к текущей дате
надо Выведите на экран дату, которая будет через неделю после текущей. вот я сделал , но добавляется не к дням, а к месяцам var...

Как добавить к дате n дней?
У меня есть дата из datetimepicture, и допустим 5 дней, как мне добавить 5 дней к дате? Потому что если я сделаю var data =...

Как добавить 45 дней к дате приема?
У меня есть бд с полями &quot;ФИО&quot;,&quot;дата приема&quot;! Мне нужно чтобы к дате приема прибавлялось 45 дней и программа показывала дату выдачи и...

171
Эксперт JS
2463 / 1769 / 625
Регистрация: 11.07.2016
Сообщений: 4,067
12.03.2024, 19:51
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от бел ка Посмотреть сообщение
народ, это вообще реально?
Да.
0
-11 / 6 / 0
Регистрация: 23.02.2023
Сообщений: 431
12.03.2024, 20:39  [ТС]
Balanaar, можешь показать на примере как это реализовать?
0
 Аватар для voraa
1296 / 1283 / 190
Регистрация: 21.01.2024
Сообщений: 5,955
12.03.2024, 21:09
Цитата Сообщение от бел ка Посмотреть сообщение
народ, это вообще реально?считать значение года из инпут, и передать в шаблонную строку
Может имеет смысл почитать учебник и про шаблонные строки?
Ну не хочется на форуме тупо переписывать учебник.
0
Эксперт .NET
 Аватар для Usaga
14368 / 9469 / 1360
Регистрация: 21.01.2016
Сообщений: 35,734
13.03.2024, 05:52
бел ка, может ты начнёшь с базовых вещей по JS открыв любой учебник? Чтобы, хотя бы, не спрашивать как что-то из инпута прочитать.

А то вся тема выглядит как просьба слепого ему что-то "на пальцах" объяснить.

Получается, что какой тебе пример кода не дадут, что люди, что ИИ, ты его использовать не можешь. Может хватит уже себе и людям (и ботам) мозг сношать? Данная тема уже завалена примерами разных нужных тебе моментов. Даже не умея программировать уже давно можно было чисто силой дедукции, понять как это всё собрать в месте. Или по аналогии написать...
0
-11 / 6 / 0
Регистрация: 23.02.2023
Сообщений: 431
13.03.2024, 06:35  [ТС]
есть такая функция,
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
elementYear.addEventListener('input', function () {
      var val = this.value.replace(/[^\\d-]/g, '').slice(0, 6);
      var selectoption = document.getElementById("select").value;
      if (selectoption === 'bc') {
        var year = parseInt(elementYear.value);
        if (year === 1) {
          var formattedyear = (year - 1).toString().padStart(4, '0');
          elementYear.value = formattedyear;
        }
        else if (year > 1 && year <= 999999) {
          var formattedyear = (year - 1).toString().padStart(6, '0');
          elementYear.value = '-' + formattedyear;
        }
      } else if (selectoption === 'ab') {
        var year = parseInt(elementYear.value);
        if (year > 0 && year < 10000) {
          var formattedyear = year.toString().padStart(4, '0');
          elementYear.value = formattedyear;
        } else if (year > 9999 && year <= 999999) {
          var formattedyear = '+' + year.toString().padStart(6, '0');
          elementYear.value = formattedyear;
        }
      }
    });
возможно ее исправить, вместо padStart использовать что нибудь типа такого

JavaScript
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
40
41
42
43
44
45
46
47
48
49
50
var selectoption = document.getElementById("select").value;
    if (selectoption === 'bc') // если выбрана опция "до н.э."
    
    if (year === 1) {
      (year - 1) // от значения полученного из инпут отнимаем 1
      year = '000' + year; // добавляем ведущие нули до 4значного числа
    }
    else if (year > 1 && year < 10) {
      (year - 1) // от значения полученного из инпут отнимаем 1
      year = '-00000' + year; // добавляем ведущие нули до 6значного числа со знаком минус
    }
    else if (year >= 10 && year < 100) {
      (year - 1) // от значения полученного из инпут отнимаем 1
      year = '-0000' + year; // добавляем ведущие нули до 6значного числа со знаком минус
    }
    else if (year >= 100 && year < 1000) {
      (year - 1) // от значения полученного из инпут отнимаем 1
      year = '-000' + year; // добавляем ведущие нули до 6значного числа со знаком минус
    }
    else if (year >= 1000 && year < 10000) {
      (year - 1) // от значения полученного из инпут отнимаем 1
      year = '-00' + year; // добавляем ведущие нули до 6значного числа со знаком минус
    }
    else if (year >= 10000 && year < 100000) {
      (year - 1) // от значения полученного из инпут отнимаем 1
      year = '-0' + year; // добавляем ведущие нули до 6значного числа со знаком минус
    }
    else if (year >= 100000 && year < 999999) {
      (year - 1) // от значения полученного из инпут отнимаем 1
      year = '-' + year; // добавляем знак минус
    }
    
    
    else if (selectoption === 'ab')  // если выбрана опция "н.э."
    
    if (year >= 1 && year < 10) {
      year = '000' + year; // добавляем ведущие нули до 4значного числа
    }
    else if (year >= 10 && year < 100) {
      year = '00' + year; // добавляем ведущие нули до 4значного числа
    }
    else if (year >= 100 && year < 1000) {
      year = '0' + year; // добавляем ведущие нули до 4значного числа
    }
    else if (year >= 10000 && year < 100000) {
      year = '+0' + year; // добавляем ведущие нули до 6значного числа со знаком плюс
    }
    else if (year >= 100000 && year < 999999) {
      year = '+0' + year; // добавляем знак плюс
    }
чтобы работало в старых браузерах

Добавлено через 12 минут
Usaga,

Цитата Сообщение от gogolik Посмотреть сообщение
сколько нужно - столько и будут. Не хотите отвечать в теме - пройдите мимо.
0
Эксперт .NET
 Аватар для Usaga
14368 / 9469 / 1360
Регистрация: 21.01.2016
Сообщений: 35,734
13.03.2024, 08:26
Цитата Сообщение от бел ка Посмотреть сообщение
чтобы работало в старых браузерах
Возможно.

Цитата Сообщение от бел ка Посмотреть сообщение
Не хотите отвечать в теме - пройдите мимо.
Такими темпами проходить мимо будет даже ChatGPT.

Вопросы более конкретно задавай. Никакой сгенерированный код за тебя тут никто править не будет.

Если тебе надо заместить padStart чем-то. То можно полифил затолкать в String.prototype.padStart. Можешь спросить у ИИ как это будет выглядеть, всё равно ты разбираться не станешь.
0
168 / 146 / 32
Регистрация: 03.09.2018
Сообщений: 499
13.03.2024, 09:11
Цитата Сообщение от бел ка Посмотреть сообщение
вместо padStart использовать
JavaScript
1
2
3
4
5
6
7
8
9
10
11
function padStart(string, targetLength, padString) {
    string = String(string);
    if (string.length >= targetLength) {
        return string;
    }
    var paddedString = '';
    var padLength = targetLength - string.length;
    while (padLength--)
        paddedString += padString;
    return paddedString + string;
}
0
-11 / 6 / 0
Регистрация: 23.02.2023
Сообщений: 431
13.03.2024, 20:22  [ТС]
Цитата Сообщение от voraa Посмотреть сообщение
Может имеет смысл почитать учебник и про шаблонные строки?
да уже понятно, что всю строку надо взять в обратные кавычки...
JavaScript
1
var nData = `"y + '-' m + '-' + d"`;
0
 Аватар для voraa
1296 / 1283 / 190
Регистрация: 21.01.2024
Сообщений: 5,955
13.03.2024, 21:15
Цитата Сообщение от бел ка Посмотреть сообщение
да уже понятно, что всю строку надо взять в обратные кавычки...
Лучше еще раз прочитать. Раз 5 (а может и 10)
1
-11 / 6 / 0
Регистрация: 23.02.2023
Сообщений: 431
14.03.2024, 20:07  [ТС]
объект дата как известно автоисправляет даты, если устанавить компоненты даты вне обычного диапазона значений, а объект сам исправит.

Цитата Сообщение от Usaga Посмотреть сообщение
Вопросы более конкретно задавай.
сейчас стоит задача, как к дате отнять и прибавить дни,
один день, и одну неделю (7 дней), при клике на кнопки, минуснеделя, плюснеделя, минусдень, плюсдень,

может кто подсказать, как это реализовать в данном скрипте?

PHP/HTML
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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
<!DOCTYPE html>
<html>
<head>
<title></title>
<style>
div {
white-space: nowrap;
}
input {
text-align: center;
}
</style>
</head>
<body>
<div>
<select id="weekDay"></select>
<button id="minusWeek">-</button>
<button id="plusWeek">+</button><br>
<input id="desiredDay" type="text" size="1">
<button id="minusDay">-</button>
<button id="plusDay">+</button><br>
<select id="desiredMonth"></select>
<button id="minusMonth">-</button>
<button id="plusMonth">+</button><br>
<input id="desiredYear" type="text" size="4">
<button id="minusYear">-</button>
<button id="plusYear">+</button><br>
<select id="desiredEra"></select>
<button id="minusEra">-</button>
<button id="plusEra">+</button><br>
<button id="today">сегодня</button>
</div>
<div id="rezult"></div>
<script>
var elementweekDay = document.getElementById('weekDay');
var elementmonthday = document.getElementById('desiredDay');
var elementmonth = document.getElementById('desiredMonth');
var elementyear = document.getElementById("desiredYear");
var elementera = document.getElementById("desiredEra");
var days = ["воскресенье", "понедельник", "вторник", "среда", "четверг", "пятница", "суббота"];
var months = ["января", "февраля", "марта", "апреля", "мая", "июня", "июля", "августа", "сентября", "октября", "ноября", "декабря"];
var eras = [["до н. э.", "-"], ["н. э.", "+"]];
function formatDate(date) {
var yyyy = date.getFullYear();
var mm = date.getMonth() + 1;
var dd = date.getDate();
if (mm < 10) {
mm = "0" + mm;
}
if (dd < 10) {
dd = "0" + dd;
}
return days[date.getDay()] + "<br>" + dd + "." + mm + "." + yyyy;
}
function updateDate() {
var weekDayIndex = elementweekDay.selectedIndex;
var year = elementyear.value.trim();
var eraIndex = elementera.selectedIndex;
if (eraIndex === 0 && year === "1") {
year = "0000";
} else if (eraIndex === 0 && year > 1 && year <= 999999) {
year = "-" + (parseInt(year, 10) - 1).toString().padStart(6, "0");
} else if (eraIndex === 1 && year >= 1 && year <= 9999) {
year = year.toString().padStart(4, "0");
} else if (eraIndex === 1 && year >= 10000 && year <= 999999) {
year = "+" + year.toString().padStart(6, "0");
}
var month = (elementmonth.selectedIndex + 1).toString().padStart(2, "0");
var day = elementmonthday.value.trim().padStart(2, "0");
var dateString = year + "-" + month + "-" + day;
var date = new Date(dateString);
elementweekDay.innerHTML = "<option>" + days[date.getDay()] + "</option>";
var formattedDate = formatDate(date);
document.getElementById("rezult").innerHTML = formattedDate;
}
elementweekDay.addEventListener("change", updateDate);
elementmonthday.addEventListener("keyup", updateDate);
elementmonth.addEventListener("change", updateDate);
elementyear.addEventListener("keyup", updateDate);
elementera.addEventListener("change", updateDate);
var date = new Date();
// день недели
elementweekDay.appendChild(new Option(days[date.getDay()], days[date.getDay()], true));
// число месяца
elementmonthday.value = date.getDate();
// месяц
for(var i = 0; i < months.length; i++) {
var option = new Option(months[i], i);
if(i === date.getMonth()) option.selected = true;
elementmonth.appendChild(option);
}
// год
elementyear.value = date.getFullYear();
// эра
for(var i = 0; i < eras.length; i++) {
var opt = elementera.appendChild(new Option(eras[i][0], eras[i][1]));
if(eras[i][0] === "н. э.") opt.selected = true;
}
updateDate();
</script>
</body>
</html>
Добавлено через 41 минуту
а что касается дня недели, скрипт сейчас правильно вычисляет день недели...

Добавлено через 1 час 32 минуты
...............
суть кнопок, не все помнят сколько дней в каком месяце, если бы скрипт выводил таблицу со всеми днями месяца, то было бы видно в соседней ячейке, какое число будет/было через неделю, а так пользователю придется сначала на костяшках кулаков посчитать сколько дней в месяце, и исходя из этого в уме высчитать дату которая отличается на неделю, (в случае начала или конца месяца), а так нажал на кнопку и перешел на нужную дату, кнопки ±день для очень ленивых, надо кликнуть на инпут, удалить одну две цифры, вставить другие цифры, кликнуть вне инпута, а так один раз нажал на кнопку, и перешел на день вперед/назад, если кликать много то тогда можно и с клавы ввести нужное число...

что касаемо кнопок ±месяц, ±год, то при клике на них скрипт должен проверить полученную дату на корректность (31.01 + мес) и исправить на последнее число февраля, (29.02 + год) и исправить на последнее число февраля...

как в данном скрипте это реализовать?
0
Эксперт .NET
 Аватар для Usaga
14368 / 9469 / 1360
Регистрация: 21.01.2016
Сообщений: 35,734
15.03.2024, 05:57
Цитата Сообщение от бел ка Посмотреть сообщение
сейчас стоит задача, как к дате отнять и прибавить дни,
А ты искать вообще пробовала?

Если нужно как-то гибче, то есть бибилотека moment

Цитата Сообщение от бел ка Посмотреть сообщение
объект дата как известно автоисправляет даты, если устанавить компоненты даты вне обычного диапазона значений, а объект сам исправит.
Тогда придётся заводить свой объект даты.
0
-11 / 6 / 0
Регистрация: 23.02.2023
Сообщений: 431
15.03.2024, 14:58  [ТС]
Цитата Сообщение от Usaga Посмотреть сообщение
Тогда придётся заводить свой объект даты.
а где взять свой объект даты? я спросила и в магазинах и на рынке, говорят не непродают, и чем его потом кормить? как воспитывать? чтобы он правильно вырос.

Добавлено через 25 минут
Usaga, особенно на птичьем рынке на меня смотрели как на идиотку, они никогда не видели никаких объектов, а тем более даже не слышали про такую породу, как Date
0
Эксперт .NET
 Аватар для Usaga
14368 / 9469 / 1360
Регистрация: 21.01.2016
Сообщений: 35,734
15.03.2024, 17:29
Цитата Сообщение от бел ка Посмотреть сообщение
а где взять свой объект даты? я спросила и в магазинах и на рынке, говорят не непродают, и чем его потом кормить? как воспитывать? чтобы он правильно вырос.
Их раздают там же, откуда появился стандартный - набивается на клавиатуре.

Цитата Сообщение от бел ка Посмотреть сообщение
особенно на птичьем рынке на меня смотрели как на идиотку
Ты и тут не лучше выглядишь.

И не надо паясничать. Ты и кат тут уже людей утомила. Если ещё и клоунаду устраивать будешь, то вообще ответы получать перестанешь.
0
-11 / 6 / 0
Регистрация: 23.02.2023
Сообщений: 431
15.03.2024, 23:16  [ТС]
Цитата Сообщение от Usaga Посмотреть сообщение
то вообще ответы получать перестанешь.
я просто поинтересовалась, не понятна одна фраза
Цитата Сообщение от Usaga Посмотреть сообщение
Тогда придётся заводить свой объект даты.
Добавлено через 5 часов 18 минут
почему не работает кнопки ± день, ±неделя, тыкнете пальцем что не так, консоль выдаёт 0 ошибок...

PHP/HTML
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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
<!DOCTYPE html>
<html>
<head>
<title>„tear-off calendar“</title>
<style>
div {
white-space: nowrap;
}
input {
text-align: center;
}
input,
select {
background-color: hsl(210,100%,90%);
color: hsl(210,100%,40%);
border: 1.5px solid hsl(210,100%,55%);
border-radius: 15px/12px;
font: bold 18px serif;
padding: 2px 5px;
margin-bottom: 5px;
outline: none;
}
</style>
</head>
<body>
<div>
<select id="weekday"></select>
<button id="minusweek">-</button>
<button id="plusweek">+</button>
<br>
<input id="desiredday" size="1">
<button id="minusday">-</button>
<button id="plusday">+</button><br>
<select id="desiredmonth"></select><br>
<input id="desiredyear" size="4"><br>
<select id="desiredera"></select>
</div>
<br>
<span id="rezult"></span>
<script>
var elementweekday = document.getElementById('weekday');
var elementmonthday = document.getElementById('desiredday');
var elementmonth = document.getElementById('desiredmonth');
var elementyear = document.getElementById("desiredyear");
var elementera = document.getElementById("desiredera");
var days = ["воскресенье", "понедельник", "вторник", "среда", "четверг", "пятница", "суббота"];
var months = ["января", "февраля", "марта", "апреля", "мая", "июня", "июля", "августа", "сентября", "октября", "ноября", "декабря"];
var eras = [["до н. э.", "-"], ["н. э.", "+"]];
function formatDate(date) {
var yyyy = date.getFullYear();
var dd = date.getDate();
if (dd < 10) {
dd = "0" + dd;
}
return days[date.getDay()] + "<br>" + dd + " " + months[date.getMonth()] + " " + yyyy + " г.";
}
var plusdaybtn = document.getElementById("plusday");
var minusdaybtn = document.getElementById("minusday");
var plusweekbtn = document.getElementById("plusweek");
var minusweekbtn = document.getElementById("minusweek");
 
plusdaybtn.addEventListener("click", function() {
    date.setDate(date.getDate() + 1);
    updateDate();
});
 
minusdaybtn.addEventListener("click", function() {
    date.setDate(date.getDate() - 1);
    updateDate();
});
 
plusweekbtn.addEventListener("click", function() {
    date.setDate(date.getDate() + 7);
    updateDate();
});
 
minusweekbtn.addEventListener("click", function() {
    date.setDate(date.getDate() - 7);
    updateDate();
});
 
function updateDate() {
var weekdayindex = elementweekday.selectedIndex;
var year = elementyear.value.trim();
var eraindex = elementera.selectedIndex;
if (eraindex === 0 && year === "1") {
year = "0000";
} else if (eraindex === 0 && year > 1 && year <= 999999) {
year = "-" + (parseInt(year, 10) - 1).toString().padStart(6, "0");
} else if (eraindex === 1 && year >= 1 && year <= 9999) {
year = year.toString().padStart(4, "0");
} else if (eraindex === 1 && year >= 10000 && year <= 999999) {
year = "+" + year.toString().padStart(6, "0");
}
var month = (elementmonth.selectedIndex + 1).toString().padStart(2, "0");
var day = elementmonthday.value.trim().padStart(2, "0");
var dateString = year + "-" + month + "-" + day;
var date = new Date(dateString);
elementweekday.innerHTML = "<option>" + days[date.getDay()] + "</option>";
var formattedDate = formatDate(date);
document.getElementById("rezult").innerHTML = formattedDate;
}
elementweekday.addEventListener("change", updateDate);
elementmonthday.addEventListener("keyup", updateDate);
elementmonth.addEventListener("change", updateDate);
elementyear.addEventListener("keyup", updateDate);
elementera.addEventListener("change", updateDate);
var date = new Date();
// день недели
elementweekday.appendChild(new Option(days[date.getDay()], days[date.getDay()], true));
// число месяца
elementmonthday.value = date.getDate();
// месяц
for(var i = 0; i < months.length; i++) {
var option = new Option(months[i], i);
if(i === date.getMonth()) option.selected = true;
elementmonth.appendChild(option);
}
 
// год
elementyear.value = date.getFullYear();
// эра
for(var i = 0; i < eras.length; i++) {
var opt = elementera.appendChild(new Option(eras[i][0], eras[i][1]));
if(eras[i][0] === "н. э.") opt.selected = true;
}
updateDate();
</script>
</body>
</html>
0
Эксперт .NET
 Аватар для Usaga
14368 / 9469 / 1360
Регистрация: 21.01.2016
Сообщений: 35,734
16.03.2024, 04:40
Цитата Сообщение от бел ка Посмотреть сообщение
почему не работает кнопки ± день, ±неделя, тыкнете пальцем что не так, консоль выдаёт 0 ошибок...
Так brakepoint поставь и посмотри...
0
-11 / 6 / 0
Регистрация: 23.02.2023
Сообщений: 431
16.03.2024, 16:14  [ТС]
Цитата Сообщение от Usaga Посмотреть сообщение
Так brakepoint поставь и посмотри...
если бы была такая возможность, в телефоне...
0
Эксперт .NET
 Аватар для Usaga
14368 / 9469 / 1360
Регистрация: 21.01.2016
Сообщений: 35,734
16.03.2024, 16:17
бел ка, так ты работай на компьютере.
0
-11 / 6 / 0
Регистрация: 23.02.2023
Сообщений: 431
16.03.2024, 16:26  [ТС]
есть ли какие нибудь функции, чтобы при сложении дат получить "правильную" дату, если например 28/29, 30, 31 янв плюс месяц, скрипт исправлял на последний день февраля, и 29 фев ± год чтобы скрипт исправлял на последний день февраля невысокосного года...

PHP/HTML
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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
<!DOCTYPE html>
<html>
<head>
<title>„tear-off calendar“</title>
<style>
div {
white-space: nowrap;
}
input {
text-align: center;
}
input,
select {
background-color: hsl(210,100%,90%);
color: hsl(210,100%,40%);
border: 1.5px solid hsl(210,100%,55%);
border-radius: 15px/12px;
font: bold 18px serif;
padding: 2px 5px;
margin-bottom: 5px;
outline: none;
}
</style>
</head>
<body>
<div>
<select id="weekday"></select>
<button id="minusweek">-</button>
<button id="plusweek">+</button><br>
<input id="desiredday" type="text" size="1">
<button id="minusday">-</button>
<button id="plusday">+</button><br>
<select id="desiredmonth"></select>
<button id="minusmonth">-</button>
<button id="plusmonth">+</button><br>
<input id="desiredyear" type="text" size="4">
<button id="minusyear">-</button>
<button id="plusyear">+</button><br>
<select id="desiredera"></select>
</div>
<br>
<span id="rezult"></span>
<script>
var elementweekday = document.getElementById('weekday');
var elementmonthday = document.getElementById('desiredday');
var elementmonth = document.getElementById('desiredmonth');
var elementyear = document.getElementById("desiredyear");
var elementera = document.getElementById("desiredera");
var days = ["воскресенье", "понедельник", "вторник", "среда", "четверг", "пятница", "суббота"];
var months = ["января", "февраля", "марта", "апреля", "мая", "июня", "июля", "августа", "сентября", "октября", "ноября", "декабря"];
var eras = [["до н. э.", "-"], ["н. э.", "+"]];
function formatDate(date) {
var yyyy = date.getFullYear();
var dd = date.getDate();
if (dd < 10) {
dd = "0" + dd;
}
return days[date.getDay()] + "<br>" + dd + " " + months[date.getMonth()] + " " + yyyy + " г.";
}
function updateDate() {
var weekdayIndex = elementweekday.selectedIndex;
var year = elementyear.value.trim();
var eraIndex = elementera.selectedIndex;
if (eraIndex === 0 && year === "1") {
year = "0000";
} else if (eraIndex === 0 && year > 1 && year <= 999999) {
year = "-" + (parseInt(year, 10) - 1).toString().padStart(6, "0");
} else if (eraIndex === 1 && year >= 1 && year <= 9999) {
year = year.toString().padStart(4, "0");
} else if (eraIndex === 1 && year >= 10000 && year <= 999999) {
year = "+" + year.toString().padStart(6, "0");
}
var month = (elementmonth.selectedIndex + 1).toString().padStart(2, "0");
var day = elementmonthday.value.trim().padStart(2, "0");
var dateString = year + "-" + month + "-" + day;
var date = new Date(dateString);
elementweekday.innerHTML = "<option>" + days[date.getDay()] + "</option>";
var formattedDate = formatDate(date);
document.getElementById("rezult").innerHTML = formattedDate;
}
elementweekday.addEventListener("change", updateDate);
elementmonthday.addEventListener("keyup", updateDate);
elementmonth.addEventListener("change", updateDate);
elementyear.addEventListener("keyup", updateDate);
elementera.addEventListener("change", updateDate);
var currentDate = new Date();
// День недели
elementweekday.appendChild(new Option(days[currentDate.getDay()], days[currentDate.getDay()], true));
// Число месяца
elementmonthday.value = currentDate.getDate();
// Месяц
for (var i = 0; i < months.length; i++) {
var option = new Option(months[i], i);
if (i === currentDate.getMonth()) option.selected = true;
elementmonth.appendChild(option);
}
// Год
elementyear.value = currentDate.getFullYear();
// Эра
for (var i = 0; i < eras.length; i++) {
var opt = elementera.appendChild(new Option(eras[i][0], eras[i][1]));
if (eras[i][0] === "н. э.") opt.selected = true;
}
// Обновить дату при нажатии на кнопки
document.getElementById("minusweek").addEventListener("click", function() {
currentDate.setDate(currentDate.getDate() - 7);
elementweekday.selectedIndex = currentDate.getDay();
elementmonthday.value = currentDate.getDate();
elementmonth.selectedIndex = currentDate.getMonth();
elementyear.value = currentDate.getFullYear();
updateDate();
});
document.getElementById("plusweek").addEventListener("click", function() {
currentDate.setDate(currentDate.getDate() + 7);
elementweekday.selectedIndex = currentDate.getDay();
elementmonthday.value = currentDate.getDate();
elementmonth.selectedIndex = currentDate.getMonth();
elementyear.value = currentDate.getFullYear();
updateDate();
});
document.getElementById("minusday").addEventListener("click", function() {
currentDate.setDate(currentDate.getDate() - 1);
elementweekday.selectedIndex = currentDate.getDay();
elementmonthday.value = currentDate.getDate();
elementmonth.selectedIndex = currentDate.getMonth();
elementyear.value = currentDate.getFullYear();
updateDate();
});
document.getElementById("plusday").addEventListener("click", function() {
currentDate.setDate(currentDate.getDate() + 1);
elementweekday.selectedIndex = currentDate.getDay();
elementmonthday.value = currentDate.getDate();
elementmonth.selectedIndex = currentDate.getMonth();
elementyear.value = currentDate.getFullYear();
updateDate();
});
document.getElementById("minusmonth").addEventListener("click", function() {
currentDate.setMonth(currentDate.getMonth() - 1);
elementweekday.selectedIndex = currentDate.getDay();
elementmonthday.value = currentDate.getDate();
elementmonth.selectedIndex = currentDate.getMonth();
elementyear.value = currentDate.getFullYear();
updateDate();
});
document.getElementById("plusmonth").addEventListener("click", function() {
currentDate.setMonth(currentDate.getMonth() + 1);
elementweekday.selectedIndex = currentDate.getDay();
elementmonthday.value = currentDate.getDate();
elementmonth.selectedIndex = currentDate.getMonth();
elementyear.value = currentDate.getFullYear();
updateDate();
});
document.getElementById("minusyear").addEventListener("click", function() {
currentDate.setFullYear(currentDate.getFullYear() - 1);
elementweekday.selectedIndex = currentDate.getDay();
elementmonthday.value = currentDate.getDate();
elementmonth.selectedIndex = currentDate.getMonth();
elementyear.value = currentDate.getFullYear();
updateDate();
});
document.getElementById("plusyear").addEventListener("click", function() {
currentDate.setFullYear(currentDate.getFullYear() + 1);
elementweekday.selectedIndex = currentDate.getDay();
elementmonthday.value = currentDate.getDate();
elementmonth.selectedIndex = currentDate.getMonth();
elementyear.value = currentDate.getFullYear();
updateDate();
});
updateDate();
</script>
</body>
</html>
как тут получить желаемый результат?
0
Эксперт .NET
 Аватар для Usaga
14368 / 9469 / 1360
Регистрация: 21.01.2016
Сообщений: 35,734
17.03.2024, 06:34
Цитата Сообщение от бел ка Посмотреть сообщение
есть ли какие нибудь функции, чтобы при сложении дат получить "правильную" дату, если например 28/29, 30, 31 янв плюс месяц, скрипт исправлял на последний день февраля, и 29 фев ± год чтобы скрипт исправлял на последний день февраля невысокосного года...
Стандартный класс Date позволяет это. Если нужно гибче, то я уже назвал библиотеку.
0
-11 / 6 / 0
Регистрация: 23.02.2023
Сообщений: 431
17.03.2024, 22:32  [ТС]
Цитата Сообщение от Usaga Посмотреть сообщение
Если нужно гибче, то я уже назвал библиотеку.
Цитата Сообщение от бел ка Посмотреть сообщение
есть ли какие нибудь функции, чтобы при сложении дат получить "правильную" дату, если например 28/29, 30, 31 янв плюс месяц, скрипт исправлял на последний день февраля, и 29 фев ± год чтобы скрипт исправлял на последний день февраля невысокосного года...

как тут получить желаемый результат?
Usaga, а без библиотек никак?

например что-то типа,

1. Добавляем месяц.
2. Если получившийся месяц отличается от исходного не на 1 (а на 2 или 0, по модулю 12), то устанавливаем число в 0 и получаем последний день нужного месяца.

JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
function addMonth(date) {
  var d = new Date(date)
  var m = d.getMonth()
  
  d.setMonth(m ± 1)
 
  if (d.getMonth() !== (m ± 1) % 12) {
    d.setDate(0)
  }
  
  return d
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
17.03.2024, 22:32

Добавить n дней к дате в виде строки dd.mm.yy
Из строки содержащей корректно заданную дату в формате &quot;dd.mm.yy&quot; где dd-день, mm-месяц, yy-год, получить строку с датой, отстоящей от...

Добавить к дате несколько рабочих дней
простое добавление дней понятно. но как добавить только рабочие дни? понятно, что с праздниками всё сложно... пусть тогда вычеркнуты будут...

Как добавить "N" рабочих дней к сегодняшней дате?
Сегодня 5.05.2020 (вторник) если к нему добавить 4 рабочих дня то получится 11.05.2020 (понедельник). Т.е. выходные (сб, вс.) не считаем. ...

Добавить заданное количество дней к текущей дате
Здравствуйте! Мне нужно сделать програмку которая будет брать текущую дату выводить ее в Label, потом добавить к этой дате 10 дней и...

А можно ли добавить к дате определенное кол-во дней?
А можно ли добавить к дате определенное кол-во дней? Например, сегодня 2004-10-08, мне надо добавить 10 дней и получить 2004-10-08....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
160
Ответ Создать тему
Новые блоги и статьи
Установка нескольких штампов электронной подписи в строго определенных местах файла docx
ВладимирСамохин 19.07.2026
(В!) Работа с Электронной подписью - это неотъемлемая часть современного документооборота. Но что делать, если нужно поставить несколько штампов электронной подписи в строго определенных местах. . .
сукцессия 35. Научная статья о проделанной работе
anaschu 19.07.2026
Написал в формате латекс и пдф
Вангую, что это не пройдёт модерацию, и на неделе я запущу свой сервер.
Hrethgir 19.07.2026
Эта публикация сейчас в песочнице и ждёт приглашения. https:/ / habr. com/ ru/ sandbox/ 295048/ начало и оглавление - Как «пернатого» заставить осваивать новые горизонты опыта через масштабирование. . .
сукцессия 33. открытые вопросы от клауде
anaschu 19.07.2026
"Что накопилось за эту часть А — тринадцать правок, из которых шесть пришли из ваших вопросов и каждая оказалась реальной ошибкой, а не калибровкой: односторонний симбиоз, отсутствующий листопад,. . .
32 сукцессия
anaschu 19.07.2026
сукцессия 28‑мерное ядро стабилизировано Коллеги, фиксирую разбор инженерных правок и их изоморфную проекцию на экономику, меметику и половой отбор. Модель теперь не «подкручивает» сходимость —. . .
сукцессия 31: модель микоризы - это модель ещё нескольких явлений, социальных и экономических
anaschu 18.07.2026
Теория «Всего»: апдейт v1. 1. 2 — 28‑мерное ядро стабилизировано Коллеги, фиксирую разбор инженерных правок и их изоморфную проекцию на экономику, меметику и половой отбор. Модель теперь не. . .
сукцессия 30. Массив проверяющих друг друга моделей
anaschu 18.07.2026
Архитектура сети взаимопроверяющих моделей микоризной сукцессии (v2. 0) Развитие тензорного ОДУ-ядра и создание кросс-платформенного калибровочного полигона Уважаемые коллеги! В продолжение. . .
Грибы - это женщины, деревья - это мужчины. Анти инь янь для союза мужчины и женщины.
anaschu 18.07.2026
ГЛАВНЫЙ НАУЧНО-ФИЛОСОФСКИЙ ВЫВОД: Сексуально-Репродуктивный Капитализм против Государства Моногамии Коллеги, мы вышли на финишную прямую 20-мерного ОДУ-моделирования вековой сукцессии (ветка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru