-11 / 6 / 0
Регистрация: 23.02.2023
Сообщений: 431

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

24.01.2024, 19:22. Показов 11058. Ответов 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
1294 / 1272 / 190
Регистрация: 21.01.2024
Сообщений: 5,886
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
1294 / 1272 / 190
Регистрация: 21.01.2024
Сообщений: 5,886
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
1294 / 1272 / 190
Регистрация: 21.01.2024
Сообщений: 5,886
08.03.2024, 19:48
Я не спрашиваю, что вы хотите, я спрашиваю, что вы делаете, и понимаете ли сами, что вы пишите.
Ваши хотелки - это ваши хотелки.
Хотя бы что то учите, что бы их реализовать.
0
-11 / 6 / 0
Регистрация: 23.02.2023
Сообщений: 431
08.03.2024, 19:54  [ТС]
Цитата Сообщение от voraa Посмотреть сообщение
И откуда вы ее взяли? Где увидели или прочитали про нее?
ии подсказал...
0
 Аватар для voraa
1294 / 1272 / 190
Регистрация: 21.01.2024
Сообщений: 5,886
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
1655 / 1154 / 173
Регистрация: 23.07.2010
Сообщений: 6,910
09.03.2024, 17:48

Не по теме:


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



Добавлено через 46 секунд
бел ка,
сделай уже что-нибудь сама, а?
1
 Аватар для voraa
1294 / 1272 / 190
Регистрация: 21.01.2024
Сообщений: 5,886
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
1655 / 1154 / 173
Регистрация: 23.07.2010
Сообщений: 6,910
11.03.2024, 11:09
Цитата Сообщение от бел ка Посмотреть сообщение
что это за функция js?
слушает ивент инпут. какой вопрос - такой ответ
0
1548 / 1525 / 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
937 / 556 / 296
Регистрация: 07.11.2022
Сообщений: 912
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
Ответ Создать тему
Опции темы

Новые блоги и статьи
Debian 13: Установка Lazarus QT5
ВитГо 09.05.2026
Эта инструкция моя компиляция инструкций volvo https:/ / www. cyberforum. ru/ blogs/ 203668/ 10753. html и его же старой инструкции по установке Lazarus с gtk2. . .
Нейросеть на алгоритме "эстафета хвоста" как перспектива.
Hrethgir 06.05.2026
На десерт, когда запущу сервер. Статья тут https:/ / habr. com/ ru/ articles/ 1030914/ . Автор я сам, нейросеть только помогает в вопросах которые мне не известны - не знаю людей которые знали-бы. . .
Асинхронный приём данных из COM-порта
Argus19 01.05.2026
Асинхронный приём данных из COM-порта Купил на aliexpress термопринтер QR701. Он оказался странным. Поключил к Arduino Nano. Был очень удивлён. Наотрез отказывается печатать русские буквы. Чтобы. . .
попытка написать игровой сервер на C++
pyirrlicht 29.04.2026
попытка написать игровой сервер на плюсах с открытым бесконечным миром. возможно получится прикрутить интерпретатор питон для кастомизации игровой логики. что есть на текущий момент:. . .
Контроль уникальности выбранного документа-основания при изменении реквизита
Maks 28.04.2026
Алгоритм из решения ниже разработан на примере нетипового документа "ЗаявкаНаРемонтСпецтехники", разработанного в КА2. Задача: уведомлять пользователя, если указанная заявка (документ-основание). . .
Благородство как наказание
Maks 24.04.2026
У хорошего человека отношения с женщинами всегда складываются трудно. А я человек хороший. Заявляю без тени смущения, потому что гордиться тут нечем. От хорошего человека ждут соответствующего. . .
Валидация и контроль данных табличной части документа перед записью
Maks 22.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в КА2. Задача: контроль и валидация данных табличной части документа перед записью с учетом регламента компании. . .
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2. Задача: разработка отчёта по затраченным материалам за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом. В. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru