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

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

24.01.2024, 19:22. Показов 10440. Ответов 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
 Аватар для voraa
1249 / 1159 / 178
Регистрация: 21.01.2024
Сообщений: 5,392
08.03.2024, 19:04
Студворк — интернет-сервис помощи студентам
Что вы пытаетесь изобразить такой конструкцией?
${day} ${months[date.getMonth()]} ${year} г. ${era} н.э.

Что бы это было $ и {} ?

Учите js. Учите. Учите, а потом делайте. Про каждую написанную конструкцию спрашивайте себя, что это означает, и что оно делает.

Если вы пытаетесь изобразить шаблонную строку, то просто погуглите, как это записывается. Просто в гугле запрос " javascript шаблонные строки"
И читайте, читайте... А потом, гогда поймете, делайте.

И, кстати, в JS они не работают.
0
-11 / 6 / 0
Регистрация: 23.02.2023
Сообщений: 431
08.03.2024, 19:22  [ТС]
Цитата Сообщение от voraa Посмотреть сообщение
Что вы пытаетесь изобразить такой конструкцией?
пытаюсь подставить значения числа месяца года эры из элементов формы в объект дата...
0
 Аватар для voraa
1249 / 1159 / 178
Регистрация: 21.01.2024
Сообщений: 5,392
08.03.2024, 19:43
Цитата Сообщение от бел ка Посмотреть сообщение
пытаюсь подставить значения числа месяца года эры из элементов формы в объект дата...
Что такое ${day}?
Как называется эта конструкция, и что она делает?
И откуда вы ее взяли? Где увидели или прочитали про нее?

Добавлено через 10 минут
И функции padStart в ES5 не было. Она появилась только после 2015г. А это уже ES6 и выше.

Добавлено через 55 секунд
Цитата Сообщение от voraa Посмотреть сообщение
И, кстати, в JS они не работают.
В ES5 они не работают
0
-11 / 6 / 0
Регистрация: 23.02.2023
Сообщений: 431
08.03.2024, 19:46  [ТС]
надо в объект дата new Date(); подставить значения года из инпут, если год от 0 до 9999 подставить это значение дополнив нулями до 4значного числа, если год более 9999 подставить это значение за знаком + и дополнить нулями до 6знаечного числа, если год меньше 0, надо подставить знак - и дополнить нулями до 6значного числа отняв от значения единицу,

далее подставить значения месяца (1-12), добавив 0 если значение меньше 10,

далее подставить значение дня, добавив 0 если значение меньше 10,

вставить в качестве разделителей дефис (-),

и взять всё кавычки...

в итоге хочу получить new Date("гггг-мм-дд");
0
 Аватар для voraa
1249 / 1159 / 178
Регистрация: 21.01.2024
Сообщений: 5,392
08.03.2024, 19:48
Я не спрашиваю, что вы хотите, я спрашиваю, что вы делаете, и понимаете ли сами, что вы пишите.
Ваши хотелки - это ваши хотелки.
Хотя бы что то учите, что бы их реализовать.
0
-11 / 6 / 0
Регистрация: 23.02.2023
Сообщений: 431
08.03.2024, 19:54  [ТС]
Цитата Сообщение от voraa Посмотреть сообщение
И откуда вы ее взяли? Где увидели или прочитали про нее?
ии подсказал...
0
 Аватар для voraa
1249 / 1159 / 178
Регистрация: 21.01.2024
Сообщений: 5,392
08.03.2024, 19:57
В топку ИИ посылайте. Свой иметь надо. Или проверять каждую букву за ИИ.
И если не знаете что то, что ИИ написал, то гуглить, что бы понять это.
Или крайне внимательно смотреть, что он отвечает.
Есть подозрение, что он ответил правильно, а вы переписали тяп-ляп.
0
-11 / 6 / 0
Регистрация: 23.02.2023
Сообщений: 431
08.03.2024, 20:03  [ТС]
Цитата Сообщение от voraa Посмотреть сообщение
Есть подозрение, что он ответил правильно, а вы переписали тяп-ляп.
значит телефон не правильно скопировал и вставил...
0
168 / 146 / 32
Регистрация: 03.09.2018
Сообщений: 499
08.03.2024, 20:18
Цитата Сообщение от бел ка Посмотреть сообщение
как дальше получить даты национальных китайских праздников, +/- дней от этих дат?
Чем мой вариант не устроил? Записать на каждый год, какой когда праздник. И держать свечку, в молитвах.
0
-11 / 6 / 0
Регистрация: 23.02.2023
Сообщений: 431
08.03.2024, 20:56  [ТС]
Именч, сейчас стоит вопрос, чем заменить инпут с типом дата, чтобы можно было бы выбирать даты и до н.э. .........
0
 Аватар для klyapa
3503 / 1267 / 429
Регистрация: 24.07.2016
Сообщений: 1,890
08.03.2024, 22:06
бел ка, тут смотрела? Документацию почитай. Можно попробовать настроить...
Правда не знаю, получится ли до н.э.
=> https://jqueryui.com/datepicker/
=> https://api.jqueryui.com/datepicker/
0
-11 / 6 / 0
Регистрация: 23.02.2023
Сообщений: 431
09.03.2024, 02:16  [ТС]
klyapa, вот пример который показывает день недели для дат до н.э.

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
<!DOCTYPE html>
<html>
   <head>
       <meta charset="UTF-8">
       <meta name="viewport" content="width=device-width, initial-scale=1.0">
       <title>День недели</title>
       <style>
         
       </style>
   </head>
   <body>
   <div id="result"></div>
<script>
  var daynames = ["Воскресенье", "Понедельник", "Вторник", "Среда", "Четверг", "Пятница", "Суббота"];
  var months = ["января", "февраля", "марта", "апреля", "мая", "июня", "июля", "августа", "сентября", "октября", "ноября", "декабря"];
  var eras = [" г. до н.э.", " г. н.э."];
  
  var data_1 = new Date("2024,03,07"); // четверг 7 марта 2024 г. н.э.
  
  var weekday_1 = data_1.getDay();
  var day_1 = data_1.getDate();
  var month_1 = data_1.getMonth();
  var year_1 = data_1.getFullYear();
  var era_1 = eras[(year_1 < 1) ? 0 : 1];
  
  var data_2 = new Date("0224,03,07"); // Воскресенье 7 марта 224 г. н.э.
  
  var weekday_2 = data_2.getDay();
  var day_2 = data_2.getDate();
  var month_2 = data_2.getMonth();
  var year_2 = data_2.getFullYear();
  var era_2 = eras[(year_2 < 1) ? 0 : 1];
  
  var data_3 = new Date("0024-03-07"); // Четверг 7 марта 24 г. н.э.
  
  var weekday_3 = data_3.getDay();
  var day_3 = data_3.getDate();
  var month_3 = data_3.getMonth();
  var year_3 = data_3.getFullYear();
  var era_3 = eras[(year_3 < 1) ? 0 : 1];
  
  var data_4 = new Date("0004-03-07"); // Воскресенье 7 марта 4 г. н.э.
  
  var weekday_4 = data_4.getDay();
  var day_4 = data_4.getDate();
  var month_4 = data_4.getMonth();
  var year_4 = data_4.getFullYear();
  var era_4 = eras[(year_4 < 1) ? 0 : 1];
  
  var data_5 = new Date("+012024-03-07"); // Четверг 7 марта 12024 г. н.э.
  
  var weekday_5 = data_5.getDay();
  var day_5 = data_5.getDate();
  var month_5 = data_5.getMonth();
  var year_5 = data_5.getFullYear();
  var era_5 = eras[(year_5 < 1) ? 0 : 1];
  
  var data_6 = new Date("+112024-03-07"); // Четверг 7 марта 112024 г. н.э.
  
  var weekday_6 = data_6.getDay();
  var day_6 = data_6.getDate();
  var month_6 = data_6.getMonth();
  var year_6 = data_6.getFullYear();
  var era_6 = eras[(year_6 < 1) ? 0 : 1];
  
  var data_7 = new Date("0000-03-07"); // Вторник 7 марта 1 г. до н.э. если год <1, то минус 1
  
  var weekday_7 = data_7.getDay();
  var day_7 = data_7.getDate();
  var month_7 = data_7.getMonth();
  var year_7 = data_7.getFullYear() - 1;
  var era_7 = eras[(year_7 < 1) ? 0 : 0];
  
  var data_8 = new Date("-000001-03-07"); // Воскресенье 7 марта 2 г. до н.э. если год <1, то минус 1
  
  var weekday_8 = data_8.getDay();
  var day_8 = data_8.getDate();
  var month_8 = data_8.getMonth();
  var year_8 = data_8.getFullYear() - 1;
  var era_8 = eras[(year_8 < 1) ? 0 : 0];
  
  var data_9 = new Date("-000010-03-07"); // Среда 7 марта 11 г. до н.э. если год <1, то минус 1
  
  var weekday_9 = data_9.getDay();
  var day_9 = data_9.getDate();
  var month_9 = data_9.getMonth();
  var year_9 = data_9.getFullYear() - 1;
  var era_9 = eras[(year_9 < 1) ? 0 : 0];
  
  var data_10 = new Date("-000100-03-07"); // Среда 7 марта 101 г. до н.э. если год <1, то минус 1
  
  var weekday_10 = data_10.getDay();
  var day_10 = data_10.getDate();
  var month_10 = data_10.getMonth();
  var year_10 = data_10.getFullYear() - 1;
  var era_10 = eras[(year_10 < 1) ? 0 : 0];
  
  var data_11 = new Date("-001000-03-07"); // Пятница 7 марта 1001 г. до н.э. если год <1, то минус 1
  
  var weekday_11 = data_11.getDay();
  var day_11 = data_11.getDate();
  var month_11 = data_11.getMonth();
  var year_11 = data_11.getFullYear() - 1;
  var era_11 = eras[(year_11 < 1) ? 0 : 0];
  
  var data_12 = new Date("-010000-03-07"); // Вторник 7 марта 10001 г. до н.э. если год <1, то минус 1
  
  var weekday_12 = data_12.getDay();
  var day_12 = data_12.getDate();
  var month_12 = data_12.getMonth();
  var year_12 = data_12.getFullYear() - 1;
  var era_12 = eras[(year_12 < 1) ? 0 : 0];
  
  var data_13 = new Date("-100000-03-07"); // Вторник 7 марта 100001 г. до н.э. если год <1, то минус 1
  
  var weekday_13 = data_13.getDay();
  var day_13 = data_13.getDate();
  var month_13 = data_13.getMonth();
  var year_13 = data_13.getFullYear() - 1;
  var era_13 = eras[(year_13 < 1) ? 0 : 0];
 
  var data_14 = new Date("0001-01-01"); // Понедельник 1 января 1 г. н.э. если год <1, то минус 1
  
  var weekday_14 = data_14.getDay();
  var day_14 = data_14.getDate();
  var month_14 = data_14.getMonth();
  var year_14 = data_14.getFullYear();
  var era_14 = eras[(year_14 < 1) ? 0 : 1];
  
  var data_15 = new Date("0000-12-31"); // Воскресенье 31 декабря 1 г. до н.э. если год <1, то минус 1
  
  var weekday_15 = data_15.getDay();
  var day_15 = data_15.getDate();
  var month_15 = data_15.getMonth();
  var year_15 = data_15.getFullYear() - 1;
  var era_15 = eras[(year_15 < 1) ? 0 : 1];
  
  var resultElement = document.getElementById("result");
 
  data_16 = new Date("0000-02-29"); // Вторник 29 февраля 1 г. до н.э. если год <1, то минус 1
  
  var weekday_16 = data_16.getDay();
  var day_16 = data_16.getDate();
  var month_16 = data_16.getMonth();
  var year_16 = data_16.getFullYear() - 1;
  var era_16 = eras[(year_16 < 1) ? 0 : 1];
  
  var resultElement = document.getElementById("result");
  
  resultElement.innerHTML = daynames[weekday_1] + "<br>" + day_1 + " " + months[month_1] + " " + year_1 + era_1 + "<br><br>" + 
                            daynames[weekday_2] + "<br>" + day_2 + " " + months[month_2] + " " + year_2 + era_2 + "<br><br>" + 
                            daynames[weekday_3] + "<br>" + day_3 + " " + months[month_3] + " " + year_3 + era_3 + "<br><br>" + 
                            daynames[weekday_4] + "<br>" + day_4 + " " + months[month_4] + " " + year_4 + era_4 + "<br><br>" + 
                            daynames[weekday_5] + "<br>" + day_5 + " " + months[month_5] + " " + year_5 + era_5 + "<br><br>" + 
                            daynames[weekday_6] + "<br>" + day_6 + " " + months[month_6] + " " + year_6 + era_6 + "<br><br>" + 
                            daynames[weekday_7] + "<br>" + day_7 + " " + months[month_7] + " " + year_7 + era_7 + "<br><br>" + 
                            daynames[weekday_8] + "<br>" + day_8 + " " + months[month_8] + " " + year_8 + era_8 + "<br><br>" + 
                            daynames[weekday_9] + "<br>" + day_9 + " " + months[month_9] + " " + year_9 + era_9 + "<br><br>" + 
                            daynames[weekday_10] + "<br>" + day_10 + " " + months[month_10] + " " + year_10 + era_10 + "<br><br>" + 
                            daynames[weekday_11] + "<br>" + day_11 + " " + months[month_11] + " " + year_11 + era_11 + "<br><br>" + 
                            daynames[weekday_12] + "<br>" + day_12 + " " + months[month_12] + " " + year_12 + era_12 + "<br><br>" + 
                            daynames[weekday_13] + "<br>" + day_13 + " " + months[month_13] + " " + year_13 + era_13 + "<br><br>" + 
                            daynames[weekday_14] + "<br>" + day_14 + " " + months[month_14] + " " + year_14 + era_14+ "<br><br>" + 
                            daynames[weekday_15] + "<br>" + day_15 + " " + months[month_15] + " " + year_15 + era_15 + "<br><br>" + 
                            daynames[weekday_16] + "<br>" + day_16 + " " + months[month_16] + " " + year_16 + era_16;
</script>
Добавлено через 4 минуты
осталось считать инфу из элементов формы и подставлять в объект дата

Добавлено через 3 часа 44 минуты
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
<!DOCTYPE html>
<html>
<head>
  <title></title>
  <style>
   div {
    white-space: nowrap;
   }
  </style>
</head>
<body>
<div>
  <select id="weekday"></select><br>
  <input id="day" type="text" size="1">
  <select id="month"></select><br>
  <input id="year" type="text" size="3"> <span> г.</span>
  <select id="era"></select>
</div>
<script>
  var selday = document.getElementById('weekday');
  var inpday = document.getElementById('day');
  var selmonth = document.getElementById('month');
  var inpyear = document.getElementById("year");
  var selera = document.getElementById("era");
 
  var days = [
    "воскресенье","понедельник","вторник",
    "среда","четверг","пятница","суббота"
  ];
 
  var months = [
    "января","февраля","марта","апреля",
    "мая","июня","июля","августа",
    "сентября","октября","ноября","декабря"
  ];
 
  var eras = [["до н. э.", "-"], ["н. э.", "+"]];
 
  var date = new Date();
 
  for(var i = 0; i < months.length; i++) { // месяц
    var option = new Option(months[i], i);
    if(i === date.getMonth()) option.selected = true;
    selmonth.appendChild(option);
  }
 
  selday.appendChild(new Option(days[date.getDay()])).selected = true; // день недели
 
  inpday.value = date.getDate();
 
  inpyear.value = date.getFullYear();
 
  inpyear.addEventListener('input', function () {
    var val = this.value.replace(/\d+/g, '');
  });
 
  for(var i = 0; i < eras.length; i++) {
    var opt = selera.appendChild(new Option(eras[i][0], eras[i][1]));
    if(eras[i][0] === "н. э.") opt.selected = true;
  }
 
 
  function formatDate(date) {
    var day = date.getDate();
    var month = date.getMonth() + 1;
    var year = Math.abs(date.getFullYear()).toString();
    var era = date.getFullYear() >= 0 ? '+' : '-';
 
    var formattedDate = day + ' ' + months[date.getMonth()] + ' ' + year + ' г. ' + era + ' н.э.';
 
    return formattedDate;
  }
 
  function updateWeekday() {
    var selectedDate = new Date(inpyear.value + '-' + (selmonth.value) + '-' + (inpday.value));
 
    selday.innerHTML = '';
    selday.appendChild(new Option(days[selectedDate.getDay()])).selected = true;
  }
 
  inpday.addEventListener('input', updateWeekday);
  selmonth.addEventListener('change', updateWeekday);
  inpyear.addEventListener('input', updateWeekday);
  selera.addEventListener('change', updateWeekday);
</script>
</body>
</html>
сейчас вообще ничего не понятно как работает скрипт, день недели то появляется то пропадает...

0
 Аватар для pincet
1654 / 1153 / 173
Регистрация: 23.07.2010
Сообщений: 6,910
09.03.2024, 17:48

Не по теме:


2moders - как отписаться от топика?
это реальный треш



Добавлено через 46 секунд
бел ка,
сделай уже что-нибудь сама, а?
1
 Аватар для voraa
1249 / 1159 / 178
Регистрация: 21.01.2024
Сообщений: 5,392
09.03.2024, 18:17
Цитата Сообщение от pincet Посмотреть сообщение
2moders - как отписаться от топика?
это реальный треш
В письмах, которые приходят, есть ссылка в конце, типа
Code
1
2
3
4
5
6
7
Отказ от подписки:
 
Чтобы отказаться от получения рассылки по этой теме, пожалуйста, перейдите на страницу:
https://www.cyberforum.ru/subscription.php?do=removesubscription&type=thread&subscriptionid=6278691&auth=6b93f9cf9893fcc3cab5ef000b97d58e
 
Чтобы отказаться от получения рассылок по ВСЕМ темам, пожалуйста, перейдите на страницу:
https://www.cyberforum.ru/subscription.php?do=viewsubscription&folderid=all
1
-11 / 6 / 0
Регистрация: 23.02.2023
Сообщений: 431
10.03.2024, 22:08  [ТС]
Цитата Сообщение от voraa Посмотреть сообщение
Есть подозрение, что он ответил правильно, а вы переписали тяп-ляп.


мой вопрос
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
inpYear.addEventListener('input', function () {
      var val = this.value.replace(/\d+/g, '');
      if (val === 'BC') { // до н.э.
        if (parseInt(inpYear.value) > 0 && parseInt(inpYear.value) < 10000) {
          var formattedYear = ('0000' + inpYear.value).slice(-4);
          inpYear.value = '-' + formattedYear;
        } else if (parseInt(inpYear.value) >= 10000 && parseInt(inpYear.value) <= 999999) {
          var formattedYear = ('000000' + inpYear.value).slice(-6);
          inpYear.value = '+' + formattedYear;
        }
      } else if (val === 'AB') { // н.э.
        if (parseInt(inpYear.value) >= 0 && parseInt(inpYear.value) < 10) {
          var formattedYear = ('000' + inpYear.value).slice(-6);
          inpYear.value = formattedYear;
        } else if (parseInt(inpYear.value) >= 10 && parseInt(inpYear.value) <= 9999) {
          var formattedYear = ('0000' + inpYear.value).slice(-6);
          inpYear.value = formattedYear;
        }
      }
    });
что это за функция js?
можно ее исправить?

если выбрана в селекте опция "до н.э." надо считать из инпут значение года, отнять единицу, обрати внимание, повторяю, отнять единицу,
если после этого полученное значение равно нулю, дополнить значение до 4значного числа, ведущими нулями, в итоге должно получится 0000,
если полученое значение больше нуля, надо дополнить ведущими нулями до 6значного числа со знаком -, в итоге должно получится -000001, -000010, -000100, -001000, -010000, -100000

если выбрана в селект "до н.э." надо считать из инпут значение года,
если полученное значение больше нуля и меньше 10000, надо дополнить до 4значного числа ведущими нулями, в итоге должно получится, 0001, 0010, 0100,1000
если полученное значение больше 9999, надо дополнить до 6значного числа ведущими нулями со знаком + впереди, в итоге должно получится +010000, +100000
и надо запретить ввод любых символов кроме цифр и знаков - и +, ограничив ввод 6значным числом и знаком - или + впереди, (для инпут type=text)
можешь исправить функцию?
повторить

полученный ответ
Нейросеть
Эта функция JavaScript отслеживает изменения в поле ввода с id "inpyear" и выполняет определенные действия в зависимости от выбранной опции в селекте.

В функции выполняются следующие действия:
1. Удаляются все цифры из значения поля ввода.
2. Если выбрана опция "до н.э.", то:
- Если значение года больше 0 и меньше 10000:
* Выполняется форматирование значения года, добавляя ведущие нули до 4-значного числа.
* Значению года добавляется знак "-" перед отформатированным значением года и записывается обратно в поле ввода.
- Если значение года больше или равно 10000 и меньше или равно 999999:
* Выполняется форматирование значения года, добавляя ведущие нули до 6-значного числа.
* Значению года добавляется знак "+" перед отформатированным значением года и записывается обратно в поле ввода.
3. Если выбрана опция "н.э.", то:
- Если значение года больше или равно 0 и меньше 10:
* Выполняется форматирование значения года, добавляя ведущие нули до 6-значного числа.
* Отформатированное значение года записывается обратно в поле ввода.
- Если значение года больше или равно 10 и меньше или равно 9999:
* Выполняется форматирование значения года, добавляя ведущие нули до 4-значного числа.
* Отформатированное значение года записывается обратно в поле ввода.

Чтобы исправить функцию, можно использовать следующий код:



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
var inpYear = document.getElementById("inpyear");
inpYear.addEventListener('input', function () {
  var val = this.value.replace(/\D+/g, ''); // Отфильтровать все символы, кроме цифр
  var selectOption = document.getElementById("select").value;
  if (selectOption === 'bc') { // до н.э.
    var year = parseInt(inpYear.value);
    if (year > 0 && year < 10000) {
      var formattedYear = year.toString().padStart(4, '0');
      inpYear.value = '-' + formattedYear;
    } else if (year >= 10000 && year <= 999999) {
      var formattedYear = year.toString().padStart(6, '0');
      inpYear.value = '+' + formattedYear;
    }
  } else if (selectOption === 'ad') { // н.э.
    var year = parseInt(inpYear.value);
    if (year >= 0 && year < 10) {
      var formattedYear = year.toString().padStart(6, '0');
      inpYear.value = formattedYear;
    } else if (year >= 10 && year <= 9999) {
      var formattedYear = year.toString().padStart(4, '0');
      inpYear.value = formattedYear;
    }
  }
});

В этом исправленном коде:
- Исправлена ошибка с именем переменной - "inpyear" заменено на "inpYear".
- Исправлена ошибка с использованием функции "parseint", исправлено на "parseInt" для приведения значения к целому числу.
- Исправлена ошибка с использованием метода "slice" для форматирования значения года, исправлено на метод "padStart".

Теперь функция должна работать согласно описанной логике.
копировать
очиститьОчистить чат
Я в упор не вижу, где отнимается год если выбрана опция "до н.э."

или я слепая?

вроде там перепутаны опции "н.э." "до н.э.", .........................



Добавлено через 12 минут
кто нибудь может помочь исправить эту функцию согласно описанному функционалу?

Добавлено через 1 час 2 минуты
как исправить эту функцию?

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
var inpYear = document.getElementById("inpyear");
inpYear.addEventListener('input', function () {
  var val = this.value.replace(/\D+/g, ''); // Отфильтровать все символы, кроме цифр
  var selectOption = document.getElementById("select").value;
  if (selectOption === 'BC') { // до н.э.
    var year = parseInt(inpYear.value);
    if (year = 0) {
      var formattedYear = year.toString().padStart(4, '0');
      inpYear.value = formattedYear;
    } else if (year > 0 && year <= 999999) {
      var formattedYear = year.toString().padStart(6, '0');
      inpYear.value = '-' + formattedYear;
    }
  } else if (selectOption === 'AB') { // н.э.
    var year = parseInt(inpYear.value);
    if (year > 0 && year < 10000) {
      var formattedYear = year.toString().padStart(4, '0');
      inpYear.value = formattedYear;
    } else if (year > 9999 && year <= 999999) {
      var formattedYear = year.toString().padStart(6, '0');
      inpYear.value = '+' + formattedYear;
    }
  }
});
чтобы отнимался 1 год от значения введённого в инпут для года?

остальное вроде правильно написала?
0
 Аватар для pincet
1654 / 1153 / 173
Регистрация: 23.07.2010
Сообщений: 6,910
11.03.2024, 11:09
Цитата Сообщение от бел ка Посмотреть сообщение
что это за функция js?
слушает ивент инпут. какой вопрос - такой ответ
0
1548 / 1521 / 325
Регистрация: 03.10.2012
Сообщений: 1,551
11.03.2024, 11:17
Я вижу, здесь все устали уже
Цитата Сообщение от бел ка Посмотреть сообщение
JavaScript
1
if (year = 0) {
бел ка, для начала исправьте это
2
-11 / 6 / 0
Регистрация: 23.02.2023
Сообщений: 431
11.03.2024, 23:23  [ТС]
MrCrown, исправить на что? чем заменить?

Добавлено через 31 минуту
MrCrown, хз, как правильно сформулировать, ну попробую
в календаре нету нулевого года,, первый г. до н.э. должен отображаться в шаблоной строке как 0000, 2г до нашей эры должен отображаться как -000001, поэтому если выбрана опция до н.э. надо из значения года введённого в инпут отнять единицу, а при вводе нуля скрипт должен исправлять на единицу и переключить селектед на опцию до н.э. если выбрана другая опция...
0
926 / 549 / 291
Регистрация: 07.11.2022
Сообщений: 901
12.03.2024, 08:01
Цитата Сообщение от бел ка Посмотреть сообщение
исправить на что?
Попробуйте прочитать учебник по JS про операторы сравнения:

Операторы сравнения
Многие операторы сравнения известны нам из математики.

В JavaScript они записываются так:

Больше/меньше: a > b, a < b.
Больше/меньше или равно: a >= b, a <= b.
Равно: a == b. Обратите внимание, для сравнения используется двойной знак равенства ==. Один знак равенства a = b означал бы присваивание.
Не равно. В математике обозначается символом ≠, но в JavaScript записывается как a != b.
1
-11 / 6 / 0
Регистрация: 23.02.2023
Сообщений: 431
12.03.2024, 19:00  [ТС]
rr33rr, пасиба

Добавлено через 35 минут
народ, это вообще реально?считать значение года из инпут, и передать в шаблонную строку значение на единицу меньше,если ввели 1 передать 0,если ввели 2 передать 1, если ввели 10 передать 9, если ввели154, передать 153, если ввели 2125, передеать в шаблонную строку 2124 и т.д. если выбрана опция до н.э.

а если выбрана опция н.э. то передать в шаблонную строку считанное из инпут значение года как есть, ничего не вычитая
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
12.03.2024, 19:00
Помогаю со студенческими работами здесь

Добавить 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....


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

Или воспользуйтесь поиском по форуму:
140
Ответ Создать тему
Новые блоги и статьи
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru