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

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

24.01.2024, 19:22. Показов 11246. Ответов 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
-11 / 6 / 0
Регистрация: 23.02.2023
Сообщений: 431
26.01.2024, 21:49  [ТС]
Студворк — интернет-сервис помощи студентам
Именч, если бы я знала как вытянуть оттуда только дату нового года

возможно ли просто получить что то типа

HTML5
1
<input type="number"><br><span ></span>
где выводится только одна дата нового года по китайскому календарю...
0
 Аватар для voraa
1296 / 1282 / 190
Регистрация: 21.01.2024
Сообщений: 5,935
26.01.2024, 22:06
Цитата Сообщение от Именч Посмотреть сообщение
Там женщине 64г
И что? Думаете она не знает ничего?
Я лишь чуток моложе. Но знаю много чего.
Цитата Сообщение от Именч Посмотреть сообщение
Цель, уйти от массива, который работает в ограниченной спеке, и на каждый чых пых возвращает undefined через функцию сортировки
Нет такой цели. Цель определить животное и цвет для текущей даты.
В задаче не требуется переводить любой день из Григорианского календаря в китайский. Нужны только даты китайского нового года.
Так часто бывает, что когда подключаешь какие то сторонние либы, то попадаешь в ситуацию: "Хочешь банан, а получаешь гориллу, держащую банан и все джунгли в придачу". По возможности надо от этого уходить.

Добавлено через 1 минуту
Цитата Сообщение от бел ка Посмотреть сообщение
если бы я знала как вытянуть оттуда только дату нового года
Ответа на мой простой вопрос, какие 3 даты нужно искать в этом массиве, очевидно, не будет.
Сами пока не знаете?

Добавлено через 6 минут
Цитата Сообщение от бел ка Посмотреть сообщение
вот массив с 2000 и 2002 годами...
Где?
0
-11 / 6 / 0
Регистрация: 23.02.2023
Сообщений: 431
26.01.2024, 22:13  [ТС]
вот исправленный массив с 2000 и 2002 годами
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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
var dates = [
      { month: "Jan",
        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: "Feb",
          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", "2000", "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", "2002", "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"] },
            ]
        }
    ];
как исправить функцию чтобы найти три даты и распарсить их?

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
function srch(arr, dat, count, current) {
     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, [], count, current); // 
   }
 
  function showResult(e) {
    var result = srch(dates, this.value);
    var day1 = parseInt(result[0]);
    var month1 = result[1];
    var year1 = result[2];
    var day2 = parseInt(result[3]);
    var month2 = result[4];
    var year2 = result[5];
    var day3 = parseInt(result[6]);
    var month3 = result[7];
    var year3 = result[8];
  
    var Data1 = day1 + '.' + month1 + '.' + year1;
    var Data2 = day2 + '.' + month2 + '.' + year2;
    var Data3 = day3 + '.' + month3 + '.' + year3;
0
168 / 146 / 32
Регистрация: 03.09.2018
Сообщений: 499
26.01.2024, 22:16
Цитата Сообщение от бел ка Посмотреть сообщение
где выводится только одна дата нового года по китайскому календарю...
https://codepen.io/okkdgg/pen/qBvVVvy?editors=1010

JavaScript
1
2
3
4
5
6
alert(calcDate('26.01.2024')); // 10.02.2024
alert(calcDate('26.01.1932')); // 06.02.1932
 
alert(calcDate('2024')); // 10.02.2024
alert(calcDate('1932')); // 06.02.1932
alert(calcDate('1985')); // 20.02.1985
Добавлено через 1 минуту
Цитата Сообщение от бел ка Посмотреть сообщение
чтобы найти три даты и распарсить их?
Ну так изначальный вопрос был - что за три даты ?
0
-11 / 6 / 0
Регистрация: 23.02.2023
Сообщений: 431
26.01.2024, 22:17  [ТС]
дата1=текущий год
дата2=текущий год +1
дата3=текущий год-1
0
168 / 146 / 32
Регистрация: 03.09.2018
Сообщений: 499
26.01.2024, 22:18
Цитата Сообщение от бел ка Посмотреть сообщение
дата1=текущий год
дата2=текущий год +1
дата3=текущий год-1
А разе дата3 и дата1 это не одно и тоже будет? (А всё понял.)
0
 Аватар для voraa
1296 / 1282 / 190
Регистрация: 21.01.2024
Сообщений: 5,935
26.01.2024, 22:22
Цитата Сообщение от бел ка Посмотреть сообщение
как исправить функцию чтобы найти три даты и распарсить их?
Я бессилен, и больше тут не отвечаю.
КАКИЕ ТРИ ДАТЫ? ЛЮБЫЕ, КАКИЕ ЗАХОЧЕТСЯ?

Добавлено через 3 минуты
Цитата Сообщение от бел ка Посмотреть сообщение
дата1=текущий год
дата2=текущий год +1
дата3=текущий год-1
Каков вопрос, таков ответ

JavaScript
1
2
3
date1 = new Date().getFullYear();
date2 = data1 + 1;
date3 = data1 - 1;
0
168 / 146 / 32
Регистрация: 03.09.2018
Сообщений: 499
26.01.2024, 22:24
https://codepen.io/okkdgg/pen/gOEXoYY?editors=0011

Текуший год: 10.02.2024
Следующий год: 29.01.2025
Предедущий год: 22.01.2023

JavaScript
1
2
3
4
5
6
7
8
9
10
11
   input.addEventListener('change', function() {
      let out  = '';
      let year = parseInt(extractYear(this.value));
      out +=  'Текуший год: ' + calcDate(year);
      out +=  '<br>Следующий год: ' + calcDate(year+1);
      out +=  '<br>Предедущий год: ' + calcDate(year-1);
      
      
      
       document.getElementById('info').innerHTML = out;
    });
0
-11 / 6 / 0
Регистрация: 23.02.2023
Сообщений: 431
26.01.2024, 22:47  [ТС]
voraa, есть дата из инпут

надо найти дату1 в массиве, год которой равен году даты из инпут

надо найти дату2 в массиве, год которой больше на единицу, даты из инпут

надо найти дату3 в массиве, год которой меньше на единицу, даты из инпут

так понятно сформулирован ответ?

Добавлено через 3 минуты
Именч, можешь выложить это сюда, в виде архива zip?
0
 Аватар для voraa
1296 / 1282 / 190
Регистрация: 21.01.2024
Сообщений: 5,935
26.01.2024, 22:49
JavaScript
1
function srch(arr, dat, count, current) {
Что такое dat? Текущая дата?
Что такое count и current?

JavaScript
1
function run(a, z, b) {
У функции 3 параметра
А вызывается с 5. Зачем.
JavaScript
1
return run(arr, p, [], count, current);
0
168 / 146 / 32
Регистрация: 03.09.2018
Сообщений: 499
26.01.2024, 22:56
Цитата Сообщение от бел ка Посмотреть сообщение
можешь выложить это сюда, в виде архива zip?
Вот, в архиве 2 варианта.

Обновил архив. Убрал функционал расчёта даты нового года в отдельный файл. Что бы не месить весь функционал
Вложения
Тип файла: zip codepen-new.zip (43.6 Кб, 4 просмотров)
0
-11 / 6 / 0
Регистрация: 23.02.2023
Сообщений: 431
26.01.2024, 23:12  [ТС]
Именч, и в принципе voraa, честно? это результат моих усилий исходя из ответов на форуме и ответов иск интеллекта
0
 Аватар для voraa
1296 / 1282 / 190
Регистрация: 21.01.2024
Сообщений: 5,935
26.01.2024, 23:13
Цитата Сообщение от бел ка Посмотреть сообщение
надо найти дату1 в массиве, год которой равен году даты из инпут

надо найти дату2 в массиве, год которой больше на единицу, даты из инпут

надо найти дату3 в массиве, год которой меньше на единицу, даты из инпут
То есть фактически найти даты китайского нового года для для этого года, предыдущего и следующего
Непонятно только зачем?

Ну найдем мы для 26.01.2024 даты 10.02.2024, 29.01.2025, 12.01.2023.
Для даты 23.03.2024 мы найдем те же самые даты (10.02.2024, 29.01.2025, 12.01.2023)

Но сейчас еще год черного кролика, а 23.03.2024 уже год зеленого дракона.

Не логичней ли находить просто дату предыдущего китайского нового года и по ней (по номеру года) определять животное и цвет?
0
168 / 146 / 32
Регистрация: 03.09.2018
Сообщений: 499
26.01.2024, 23:21
Цитата Сообщение от бел ка Посмотреть сообщение
честно?
Честно - что?
Цитата Сообщение от бел ка Посмотреть сообщение
это результат моих усилий
Я рад, что ваши усилия были вложены в результат того, что до сих пор не понимаете.

Цитата Сообщение от бел ка Посмотреть сообщение
и ответов иск интеллекта
Многие заинтересованы лишь дать понять, но понять ещё надо.

Добавлено через 2 минуты
В принципе, расчёт китайского нового года, это ещё тот геморрой, который сложно излечимый, и на Руси такое редко встречается. По этому тут было действительно 2 варианта. Построить массив, и прописать туда нужные даты. Или пойти к китайцу в репу, и взять уже реализованный код. Но второй вариант оказывается на много проще, ведь уже нету функции поиска в массиве. И поддержка дат шире, от -105 до 2200 года
0
 Аватар для klyapa
3503 / 1267 / 429
Регистрация: 24.07.2016
Сообщений: 1,890
26.01.2024, 23:25
Цитата Сообщение от бел ка Посмотреть сообщение
как исправить функцию чтобы найти три даты и распарсить их?
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
   function srch(arr, dat) {
     var p = dat.split('-')[0];
     var cnt = [-1, 1], h = -1; // новые вводные ... не пугайся )
       function run(a, z, b) {
         if (b.length === 9) 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 + cnt[++h]), b);
                 }
               }
             }
           }
         }
       }
     return run(arr, p, []);
   }
 
  function showResult(e) {  
    var result = srch(dates, this.value);
    
    console.log(result); // ['10', '02', '2024', '22', '01', '2023', '29', '01', '2025']
    // по порядку...
    // '10', '02', '2024', - текущий год
    // '22', '01', '2023', - текущий год минус 1
    // '29', '01', '2025' - текущий год плюс 1
    
    var day1 = parseInt(result[0]);
    var month1 = result[1];
...

Не по теме:

бесконечный сериал какой-то )

0
 Аватар для voraa
1296 / 1282 / 190
Регистрация: 21.01.2024
Сообщений: 5,935
26.01.2024, 23:27
Цитата Сообщение от Именч Посмотреть сообщение
Но второй вариант оказывается на много проще, ведь уже нету функции поиска в массиве. И поддержка дат шире, от -105 до 2200 года
Там слишком большой массив.
Я бы реализовывал третий вариант.
Написать скрипт, который для каждого года вычисляет дату нового года, используя эти библиотеки. Загнать эти даты в массив, перевести в JSON.
Потом этот JSON как объект использовать в основной задаче. И по объему меньше и по скорости лучше, если нужен только поиск даты нового года.
0
-11 / 6 / 0
Регистрация: 23.02.2023
Сообщений: 431
27.01.2024, 00:22  [ТС]
Цитата Сообщение от voraa Посмотреть сообщение
То есть фактически найти даты китайского нового года для для этого года, предыдущего и следующего
Непонятно только зачем?

Ну найдем мы для 26.01.2024 даты 10.02.2024, 29.01.2025, 12.01.2023.
Для даты 23.03.2024 мы найдем те же самые даты (10.02.2024, 29.01.2025, 12.01.2023)

Но сейчас еще год черного кролика, а 23.03.2024 уже год зеленого дракона.

Не логичней ли находить просто дату предыдущего китайского нового года и по ней (по номеру года) определять животное и цвет?
логика простая, находим дату за текущий год,
10.02.2024 сохраняем в переменную

находим дату за будущий
год 29.01.2025, сохраняем в переменную

находим дату за предыдущий год 12.01.2023.сохраняем в переменную

потом получаем дату последнего дня года дракона отняв 1 день

потом получаем последнюю дату года кролика отняв один день

если год дракона начался, выводим две даты года дракона

если ещё год кролика, выводим две даты для года кролика
и две даты для года дракона

две даты - это первый день года, и последний день года, кролика, дракона и тд

Добавлено через 3 минуты
12.01.2023-10.02.2024

10.02.2024-28.01.2025

Добавлено через 25 минут
дата за будущий год нужна только для расчета последнего дня текущего года

Добавлено через 9 минут
10.02.2024, год дракона
29.01.2025, год змеи
12.01.2023 год кролика

из даты года змеи отнимает 1 день и получаем дату года дракона (последний день)

выводим обе даты для года дракона

из даты года дракона отнимаем 1 день и получаем дату года кролика (последний день)

выводим обе даты года кролика

Добавлено через 4 минуты
если год дракона начался
выводим только даты года дракона
если год дракона не начался, но уже 2024 по нашему календарю, выводим даты и для года кролика и для года дракона
0
168 / 146 / 32
Регистрация: 03.09.2018
Сообщений: 499
27.01.2024, 04:57
Цитата Сообщение от voraa Посмотреть сообщение
Загнать эти даты в массив, перевести в JSON.
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
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
const d0 = [8,2], d1 = [28,1], d2 = [15,2], 
    d3 = [4,2], d4 = [25,1], d5 = [12,2], d6 = [1,2], 
    d7 = [22,1], d8 = [10,2], d9 = [29,1], d10 = [18,1], 
    d11 = [6,2], d12 = [26,1], d13 = [13,2], d14 = [3,2], 
    d15 = [23,1], d16 = [11,2], d17 = [31,1], d18 = [20,1], 
    d19 = [9,2], d20 = [30,1], d21 = [5,2], d22 = [14,2], 
    d23 = [19,1], d24 = [7,2], d25 = [27,1], d26 = [2,2], 
    d27 = [21,1], d28 = [24,1], d29 = [17,1], d30 = [16,1], 
    d31 = [15,1], d32 = [14,1], d33 = [13,1], d34 = [18,2], 
    d35 = [20,2], d36 = [16,2], d37 = [19,2], d38 = [17,2], 
    dates = {1000:d0,1001:d1,1002:d2,1003:d3,1004:d4,1005:d5,1006:d6,1007:d7,1008:d8,1009:d9,1010:d10,1011:d11,1012:d12,1013:d13,
             1014:d14,1015:d15,1016:d16,1017:d17,1018:d18,1019:d0,1020:d1,1021:d2,1022:d3,1023:d4,1024:d13,1025:d6,1026:d7,1027:d19,
             1028:d20,1029:d10,1030:d21,1031:d12,1032:d22,1033:d14,1034:d15,1035:d16,1036:d17,1037:d23,1038:d24,1039:d25,1040:d2,1041:d3,
             1042:d4,1043:d13,1044:d26,1045:d27,1046:d19,1047:d9,1048:d10,1049:d21,1050:d12,1051:d22,1052:d3,1053:d15,1054:d16,1055:d17,
             1056:d18,1057:d24,1058:d25,1059:d2,1060:d21,1061:d28,1062:d5,1063:d6,1064:d27,1065:d0,1066:d9,1067:d10,1068:d11,1069:d12,
             1070:d22,1071:d14,1072:d15,1073:d8,1074:d20,1075:d18,1076:d0,1077:d25,1078:d29,1079:d21,1080:d4,1081:d5,1082:d6,1083:d27,
             1084:d19,1085:d9,1086:d10,1087:d11,1088:d25,1089:d13,1090:d14,1091:d15,1092:d8,1093:d20,1094:d23,1095:d0,1096:d1,1097:d30,
             1098:d3,1099:d28,1100:d5,1101:d17,1102:d27,1103:d19,1104:d20,1105:d10,1106:d11,1107:d12,1108:d22,1109:d26,1110:d7,1111:d8,
             1112:d17,1113:d18,1114:d0,1115:d1,1116:d29,1117:d3,1118:d28,1119:d5,1120:d6,1121:d27,1122:d19,1123:d9,1124:d23,1125:d21,
             1126:d4,1127:d13,1128:d14,1129:d7,1130:d8,1131:d17,1132:d18,1133:d24,1134:d25,1135:d30,1136:d3,1137:d15,1138:d5,1139:d6,
             1140:d7,1141:d19,1142:d9,1143:d10,1144:d11,1145:d4,1146:d13,1147:d26,1148:d15,1149:d8,1150:d17,1151:d18,1152:d0,1153:d25,
             1154:d22,1155:d3,1156:d28,1157:d5,1158:d6,1159:d27,1160:d19,1161:d1,1162:d29,1163:d21,1164:d12,1165:d13,1166:d14,1167:d15,
             1168:d16,1169:d20,1170:d23,1171:d24,1172:d25,1173:d30,1174:d3,1175:d4,1176:d5,1177:d6,1178:d27,1179:d19,1180:d9,1181:d29,
             1182:d21,1183:d12,1184:d22,1185:d26,1186:d15,1187:d8,1188:d20,1189:d23,1190:d24,1191:d25,1192:d29,1193:d3,1194:d28,1195:d5,
             1196:d6,1197:d18,1198:d0,1199:d1,1200:d10,1201:d21,1202:d12,1203:d22,1204:d14,1205:d7,1206:d8,1207:d20,1208:d23,1209:d11,
             1210:d25,1211:d29,1212:d21,1213:d28,1214:d5,1215:d6,1216:d27,1217:d0,1218:d1,1219:d10,1220:d11,1221:d4,1222:d13,1223:d26,
             1224:d7,1225:d19,1226:d20,1227:d23,1228:d0,1229:d25,1230:d30,1231:d3,1232:d28,1233:d16,1234:d17,1235:d27,1236:d19,1237:d1,
             1238:d10,1239:d11,1240:d12,1241:d13,1242:d26,1243:d7,1244:d8,1245:d20,1246:d23,1247:d24,1248:d1,1249:d30,1250:d14,1251:d28,
             1252:d5,1253:d17,1254:d27,1255:d19,1256:d9,1257:d29,1258:d21,1259:d4,1260:d13,1261:d6,1262:d7,1263:d8,1264:d17,1265:d23,
             1266:d24,1267:d25,1268:d30,1269:d14,1270:d15,1271:d16,1272:d6,1273:d27,1274:d19,1275:d9,1276:d10,1277:d21,1278:d4,1279:d13,
             1280:d26,1281:d7,1282:d8,1283:d20,1284:d23,1285:d11,1286:d12,1287:d31,1288:d14,1289:d15,1290:d16,1291:d6,1292:d27,1293:d0,
             1294:d1,1295:d29,1296:d21,1297:d28,1298:d5,1299:d26,1300:d15,1301:d8,1302:d20,1303:d23,1304:d11,1305:d12,1306:d31,1307:d14,
             1308:d28,1309:d16,1310:d17,1311:d18,1312:d0,1313:d25,1314:d29,1315:d21,1316:d4,1317:d32,1318:d26,1319:d7,1320:d8,1321:d9,
             1322:d10,1323:d11,1324:d25,1325:d31,1326:d14,1327:d28,1328:d5,1329:d17,1330:d18,1331:d0,1332:d1,1333:d29,1334:d21,1335:d4,
             1336:d13,1337:d6,1338:d27,1339:d19,1340:d9,1341:d10,1342:d11,1343:d25,1344:d30,1345:d14,1346:d15,1347:d16,1348:d17,1349:d23,
             1350:d24,1351:d1,1352:d10,1353:d21,1354:d4,1355:d32,1356:d26,1357:d27,1358:d19,1359:d9,1360:d23,1361:d11,1362:d25,1363:d30,
             1364:d3,1365:d15,1366:d8,1367:d17,1368:d18,1369:d24,1370:d1,1371:d29,1372:d21,1373:d28,1374:d5,1375:d6,1376:d7,1377:d19,
             1378:d9,1379:d23,1380:d24,1381:d12,1382:d31,1383:d14,1384:d15,1385:d8,1386:d17,1387:d18,1388:d0,1389:d1,1390:d29,1391:d21,
             1392:d4,1393:d5,1394:d6,1395:d7,1396:d8,1397:d9,1398:d23,1399:d11,1400:d12,1401:d31,1402:d26,1403:d15,1404:d16,1405:d17,
             1406:d18,1407:d0,1408:d1,1409:d30,1410:d3,1411:d28,1412:d5,1413:d6,1414:d7,1415:d8,1416:d20,1417:d10,1418:d11,1419:d12,
             1420:d31,1421:d26,1422:d15,1423:d16,1424:d6,1425:d18,1426:d0,1427:d1,1428:d29,1429:d3,1430:d28,1431:d5,1432:d26,1433:d27,
             1434:d19,1435:d9,1436:d10,1437:d21,1438:d12,1439:d31,1440:d14,1441:d15,1442:d16,1443:d17,1444:d18,1445:d24,1446:d25,1447:d29,
             1448:d21,1449:d28,1450:d32,1451:d26,1452:d7,1453:d19,1454:d9,1455:d10,1456:d11,1457:d12,1458:d31,1459:d14,1460:d28,1461:d8,
             1462:d20,1463:d18,1464:d24,1465:d25,1466:d29,1467:d21,1468:d4,1469:d33,1470:d6,1471:d27,1472:d19,1473:d1,1474:d10,1475:d11,
             1476:d25,1477:d31,1478:d14,1479:d15,1480:d16,1481:d20,1482:d23,1483:d24,1484:d1,1485:d29,1486:d21,1487:d4,1488:d32,1489:d6,
             1490:d27,1491:d19,1492:d9,1493:d10,1494:d11,1495:d12,1496:d30,1497:d26,1498:d7,1499:d8,1500:d17,1501:d23,1502:d24,1503:d1,
             1504:d29,1505:d3,1506:d28,1507:d33,1508:d6,1509:d27,1510:d19,1511:d9,1512:d23,1513:d11,1514:d12,1515:d31,1516:d14,1517:d7,
             1518:d8,1519:d17,1520:d18,1521:d24,1522:d1,1523:d29,1524:d3,1525:d15,1526:d16,1527:d6,1528:d7,1529:d19,1530:d9,1531:d10,
             1532:d11,1533:d4,1534:d32,1535:d26,1536:d15,1537:d8,1538:d17,1539:d18,1540:d0,1541:d25,1542:d30,1543:d3,1544:d28,1545:d33,
             1546:d6,1547:d7,1548:d8,1549:d9,1550:d10,1551:d21,1552:d12,1553:d32,1554:d26,1555:d15,1556:d16,1557:d20,1558:d18,1559:d24,
             1560:d25,1561:d30,1562:d3,1563:d28,1564:d32,1565:d6,1566:d27,1567:d19,1568:d9,1569:d29,1570:d21,1571:d12,1572:d31,1573:d26,
             1574:d15,1575:d16,1576:d17,1577:d23,1578:d24,1579:d25,1580:d30,1581:d3,1582:d28,1583:d28,1584:d5,1585:d17,1586:d34,1587:d24,
             1588:d1,1589:d2,1590:d21,1591:d4,1592:d13,1593:d6,1594:d35,1595:d19,1596:d9,1597:d36,1598:d11,1599:d25,1600:d2,1601:d14,
             1602:d15,1603:d16,1604:d17,1605:d34,1606:d24,1607:d1,1608:d36,1609:d21,1610:d4,1611:d13,1612:d26,1613:d37,1614:d19,1615:d9,
             1616:d38,1617:d11,1618:d12,1619:d22,1620:d3,1621:d7,1622:d8,1623:d17,1624:d37,1625:d24,1626:d1,1627:d36,1628:d21,1629:d28,
             1630:d5,1631:d6,1632:d35,1633:d0,1634:d9,1635:d38,1636:d24,1637:d12,1638:d22,1639:d14,1640:d15,1641:d8,1642:d20,1643:d37,
             1644:d0,1645:d1,1646:d36,1647:d21,1648:d4,1649:d16,1650:d6,1651:d27,1652:d19,1653:d9,1654:d38,1655:d11,1656:d12,1657:d13,
             1658:d26,1659:d15,1660:d16,1661:d20,1662:d34,1663:d0,1664:d1,1665:d2,1666:d3,1667:d28,1668:d5,1669:d6,1670:d27,1671:d19,
             1672:d20,1673:d38,1674:d11,1675:d12,1676:d22,1677:d26,1678:d15,1679:d16,1680:d17,1681:d34,1682:d24,1683:d25,1684:d2,1685:d14,
             1686:d28,1687:d5,1688:d26,1689:d27,1690:d19,1691:d9,1692:d38,1693:d21,1694:d4,1695:d13,1696:d14,1697:d15,1698:d16,1699:d17,
             1700:d37,1701:d0,1702:d1,1703:d36,1704:d21,1705:d4,1706:d13,1707:d14,1708:d15,1709:d8,1710:d20,1711:d38,1712:d24,1713:d12,
             1714:d22,1715:d3,1716:d28,1717:d16,1718:d17,1719:d37,1720:d0,1721:d1,1722:d36,1723:d21,1724:d12,1725:d13,1726:d26,1727:d7,
             1728:d8,1729:d9,1730:d38,1731:d24,1732:d25,1733:d22,1734:d3,1735:d28,1736:d5,1737:d17,1738:d37,1739:d0,1740:d9,1741:d36,
             1742:d21,1743:d12,1744:d13,1745:d6,1746:d7,1747:d19,1748:d20,1749:d38,1750:d24,1751:d25,1752:d2,1753:d14,1754:d15,1755:d16,
             1756:d17,1757:d34,1758:d0,1759:d9,1760:d38,1761:d21,1762:d4,1763:d13,1764:d26,1765:d27,1766:d19,1767:d20,1768:d34,1769:d24,
             1770:d25,1771:d2,1772:d3,1773:d15,1774:d16,1775:d17,1776:d37,1777:d0,1778:d1,1779:d36,1780:d21,1781:d28,1782:d5,1783:d26,
             1784:d7,1785:d19,1786:d20,1787:d34,1788:d24,1789:d12,1790:d22,1791:d14,1792:d28,1793:d16,1794:d17,1795:d27,1796:d19,1797:d1,
             1798:d36,1799:d21,1800:d4,1801:d13,1802:d14,1803:d15,1804:d16,1805:d17,1806:d34,1807:d24,1808:d1,1809:d22,1810:d3,1811:d4,
             1812:d13,1813:d6,1814:d27,1815:d19,1816:d9,1817:d36,1818:d21,1819:d12,1820:d22,1821:d14,1822:d15,1823:d16,1824:d17,1825:d34,
             1826:d24,1827:d25,1828:d2,1829:d3,1830:d4,1831:d13,1832:d26,1833:d35,1834:d19,1835:d9,1836:d38,1837:d21,1838:d12,1839:d22,
             1840:d14,1841:d15,1842:d8,1843:d20,1844:d34,1845:d24,1846:d25,1847:d2,1848:d21,1849:d28,1850:d5,1851:d6,1852:d35,1853:d0,
             1854:d9,1855:d38,1856:d11,1857:d12,1858:d22,1859:d14,1860:d15,1861:d8,1862:d20,1863:d34,1864:d0,1865:d25,1866:d2,1867:d21,
             1868:d4,1869:d16,1870:d17,1871:d37,1872:d19,1873:d9,1874:d38,1875:d11,1876:d12,1877:d13,1878:d26,1879:d7,1880:d8,1881:d20,
             1882:d34,1883:d0,1884:d1,1885:d2,1886:d3,1887:d28,1888:d5,1889:d17,1890:d27,1891:d19,1892:d20,1893:d38,1894:d11,1895:d12,
             1896:d13,1897:d26,1898:d7,1899:d8,1900:d17,1901:d37,1902:d0,1903:d9,1904:d36,1905:d3,1906:d4,1907:d13,1908:d26,1909:d7,
             1910:d8,1911:d20,1912:d34,1913:d11,1914:d12,1915:d22,1916:d14,1917:d15,1918:d16,1919:d6,1920:d35,1921:d0,1922:d1,1923:d36,
             1924:d21,1925:d28,1926:d13,1927:d26,1928:d15,1929:d8,1930:d20,1931:d38,1932:d11,1933:d12,1934:d22,1935:d3,1936:d28,1937:d16,
             1938:d17,1939:d37,1940:d0,1941:d25,1942:d2,1943:d21,1944:d4,1945:d13,1946:d26,1947:d7,1948:d8,1949:d9,1950:d38,1951:d11,
             1952:d25,1953:d22,1954:d14,1955:d28,1956:d5,1957:d17,1958:d34,1959:d0,1960:d1,1961:d2,1962:d21,1963:d4,1964:d13,1965:d26,
             1966:d27,1967:d19,1968:d20,1969:d38,1970:d11,1971:d25,1972:d2,1973:d14,1974:d15,1975:d16,1976:d17,1977:d34,1978:d24,1979:d1,
             1980:d36,1981:d21,1982:d4,1983:d13,1984:d26,1985:d35,1986:d19,1987:d9,1988:d38,1989:d11,1990:d25,1991:d2,1992:d3,1993:d15,
             1994:d8,1995:d17,1996:d37,1997:d24,1998:d1,1999:d36,2000:d21,2001:d28,2002:d5,2003:d6,2004:d7,2005:d19,2006:d9,2007:d34,
             2008:d24,2009:d12,2010:d22,2011:d14,2012:d15,2013:d8,2014:d17,2015:d37,2016:d0,2017:d1,2018:d36,2019:d21,2020:d4,2021:d5,
             2022:d6,2023:d7,2024:d8,2025:d9,2026:d38,2027:d11,2028:d12,2029:d13,2030:d14,2031:d15,2032:d16,2033:d17,2034:d37,2035:d0,
             2036:d1,2037:d2,2038:d3,2039:d28,2040:d5,2041:d6,2042:d7,2043:d8,2044:d20,2045:d38,2046:d11,2047:d12,2048:d22,2049:d26,
             2050:d15,2051:d16,2052:d6,2053:d37,2054:d0,2055:d1,2056:d2,2057:d3,2058:d28,2059:d5,2060:d26,2061:d27,2062:d19,2063:d9,
             2064:d38,2065:d21,2066:d12,2067:d22,2068:d14,2069:d15,2070:d16,2071:d17,2072:d37,2073:d24,2074:d25,2075:d2,2076:d21,
             2077:d28,2078:d5,2079:d26,2080:d7,2081:d19,2082:d9,2083:d38,2084:d11,2085:d12,2086:d22,2087:d14,2088:d28,2089:d8,2090:d20,
             2091:d34,2092:d24,2093:d25,2094:d2,2095:d21,2096:d4,2097:d5,2098:d6,2099:d27,2100:d19,2101:d9,2102:d38,2103:d24,2104:d1,
             2105:d2,2106:d3,2107:d28,2108:d5,2109:d17,2110:d37,2111:d0,2112:d9,2113:d36,2114:d11,2115:d12,2116:d22,2117:d26,2118:d7,
             2119:d8,2120:d20,2121:d38,2122:d24,2123:d25,2124:d2,2125:d14,2126:d15,2127:d16,2128:d6,2129:d37,2130:d0,2131:d9,2132:d38,
             2133:d21,2134:d4,2135:d13,2136:d26,2137:d7,2138:d8,2139:d20,2140:d34,2141:d24,2142:d25,2143:d2,2144:d3,2145:d15,2146:d16,
             2147:d6,2148:d35,2149:d0,2150:d9,2151:d36,2152:d21,2153:d4,2154:d5,2155:d26,2156:d15,2157:d8,2158:d20,2159:d34,2160:d24,
             2161:d12,2162:d22,2163:d14,2164:d28,2165:d16,2166:d6,2167:d35,2168:d19,2169:d1,2170:d36,2171:d21,2172:d4,2173:d5,2174:d26,
             2175:d15,2176:d16,2177:d20,2178:d34,2179:d24,2180:d25,2181:d22,2182:d14,2183:d28,2184:d5,2185:d17,2186:d27,2187:d0,2188:d1,
             2189:d2,2190:d21,2191:d4,2192:d13,2193:d26,2194:d7,2195:d8,2196:d20,2197:d38,2198:d11,2199:d25,2200:d2};
    const listColors = [
      "зелёно", "зелёно", "красно", "красно", "жёлто", "жёлто", "бело", "бело", "сине", "сине"];
    const listEnd = [
      "й", "го", "го", "го","го", "й","й", "й", "й", "го", "й", "й"];
    const listAnimal = [
      "крысы", "быка", "тигра", "кролика", "дракона", "змеи", "лошади", "козы", "обезьяны", "петуха", "собаки", "свиньи" ];
 
function ChineseNewYear(year, offset) {
    year = parseInt(year);
    if(isNaN(year) || (year < 1000 || year > 2200)) year = new Date().getFullYear();
    offset = parseFloat(offset);
    (!isNaN(offset)) && ((offset>=0) ? (year += offset) : (year += offset));
 
    const infoYear = dates[year];
    let d = infoYear[0];
    if(d < 10) d = '0' + d;
    
    let m = infoYear[1];
    if(m < 10) m = '0' + m;
    
    const year1564 = year - 1564;
    const chineseNumYear = year + 2697;
 
    return {
        date:   d + '.' + m + '.' + year,
        color:  listColors[year1564 % listColors.length],
        end:    listEnd[year1564 % listEnd.length],
        animal: listAnimal[year1564 % listAnimal.length],
        chineseNumYear: chineseNumYear,
        cycleNum:       Math.floor(chineseNumYear / 60) + 1,
        yearCycle:      (chineseNumYear % 60 === 0 ? 6 : chineseNumYear % 60) + " год в 60-летнем цикле.",
    };
}
JavaScript
1
2
3
4
5
6
7
8
console.log(ChineseNewYear(2024));
//animal: "дракона"
//chineseNumYear: 4721
//color: "зелёно"
//cycleNum: 79
//date: "10.02.2024"
//end: "го"
//yearCycle: "41 год в 60-летнем цикле."
JavaScript
1
2
3
4
5
6
7
8
console.log(ChineseNewYear(2024, -1));
// animal: "кролика"
// chineseNumYear: 4720
// color: "сине"
// cycleNum: 79
// date: "22.01.2023"
// end: "го"
// yearCycle: "40 год в 60-летнем цикле."
JavaScript
1
2
3
4
5
6
7
8
console.log(ChineseNewYear(false,5));
// animal: "петуха"
// chineseNumYear: 4726
// color: "жёлто"
// cycleNum: 79
// date: "13.02.2029"
// end: "го"
// yearCycle: "46 год в 60-летнем цикле."
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
function printDate(data) {
    if("string" == typeof data) {
        data = data.match(/\b\d{4}\b/);
    } else if (data instanceof Date) {
        data = data.getFullYear();
    }
    let infoStart = ChineseNewYear(data);
    let infoEnd = ChineseNewYear(data, 1);
    
    return `год ${infoStart.color}${infoStart.end} ${infoStart.animal}.
    <br/>${infoStart.date}-${infoEnd.date}
    <br/>${infoStart.chineseNumYear} г.
    <br/>${infoStart.cycleNum} цикл
    <br/>${infoStart.yearCycle}`;
}
JavaScript
1
2
3
4
5
6
console.log(printDate("2024"));
// год зелёного дракона.
//  <br/>10.02.2024-29.01.2025
//  <br/>4721 г.
//  <br/>79 цикл
//  <br/>41 год в 60-летнем цикле.
0
168 / 146 / 32
Регистрация: 03.09.2018
Сообщений: 499
27.01.2024, 05:07
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
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
<!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>
 const d0 = [8,2], d1 = [28,1], d2 = [15,2], 
    d3 = [4,2], d4 = [25,1], d5 = [12,2], d6 = [1,2], 
    d7 = [22,1], d8 = [10,2], d9 = [29,1], d10 = [18,1], 
    d11 = [6,2], d12 = [26,1], d13 = [13,2], d14 = [3,2], 
    d15 = [23,1], d16 = [11,2], d17 = [31,1], d18 = [20,1], 
    d19 = [9,2], d20 = [30,1], d21 = [5,2], d22 = [14,2], 
    d23 = [19,1], d24 = [7,2], d25 = [27,1], d26 = [2,2], 
    d27 = [21,1], d28 = [24,1], d29 = [17,1], d30 = [16,1], 
    d31 = [15,1], d32 = [14,1], d33 = [13,1], d34 = [18,2], 
    d35 = [20,2], d36 = [16,2], d37 = [19,2], d38 = [17,2], 
    dates = {1000:d0,1001:d1,1002:d2,1003:d3,1004:d4,1005:d5,1006:d6,1007:d7,1008:d8,1009:d9,1010:d10,1011:d11,1012:d12,1013:d13,
             1014:d14,1015:d15,1016:d16,1017:d17,1018:d18,1019:d0,1020:d1,1021:d2,1022:d3,1023:d4,1024:d13,1025:d6,1026:d7,1027:d19,
             1028:d20,1029:d10,1030:d21,1031:d12,1032:d22,1033:d14,1034:d15,1035:d16,1036:d17,1037:d23,1038:d24,1039:d25,1040:d2,1041:d3,
             1042:d4,1043:d13,1044:d26,1045:d27,1046:d19,1047:d9,1048:d10,1049:d21,1050:d12,1051:d22,1052:d3,1053:d15,1054:d16,1055:d17,
             1056:d18,1057:d24,1058:d25,1059:d2,1060:d21,1061:d28,1062:d5,1063:d6,1064:d27,1065:d0,1066:d9,1067:d10,1068:d11,1069:d12,
             1070:d22,1071:d14,1072:d15,1073:d8,1074:d20,1075:d18,1076:d0,1077:d25,1078:d29,1079:d21,1080:d4,1081:d5,1082:d6,1083:d27,
             1084:d19,1085:d9,1086:d10,1087:d11,1088:d25,1089:d13,1090:d14,1091:d15,1092:d8,1093:d20,1094:d23,1095:d0,1096:d1,1097:d30,
             1098:d3,1099:d28,1100:d5,1101:d17,1102:d27,1103:d19,1104:d20,1105:d10,1106:d11,1107:d12,1108:d22,1109:d26,1110:d7,1111:d8,
             1112:d17,1113:d18,1114:d0,1115:d1,1116:d29,1117:d3,1118:d28,1119:d5,1120:d6,1121:d27,1122:d19,1123:d9,1124:d23,1125:d21,
             1126:d4,1127:d13,1128:d14,1129:d7,1130:d8,1131:d17,1132:d18,1133:d24,1134:d25,1135:d30,1136:d3,1137:d15,1138:d5,1139:d6,
             1140:d7,1141:d19,1142:d9,1143:d10,1144:d11,1145:d4,1146:d13,1147:d26,1148:d15,1149:d8,1150:d17,1151:d18,1152:d0,1153:d25,
             1154:d22,1155:d3,1156:d28,1157:d5,1158:d6,1159:d27,1160:d19,1161:d1,1162:d29,1163:d21,1164:d12,1165:d13,1166:d14,1167:d15,
             1168:d16,1169:d20,1170:d23,1171:d24,1172:d25,1173:d30,1174:d3,1175:d4,1176:d5,1177:d6,1178:d27,1179:d19,1180:d9,1181:d29,
             1182:d21,1183:d12,1184:d22,1185:d26,1186:d15,1187:d8,1188:d20,1189:d23,1190:d24,1191:d25,1192:d29,1193:d3,1194:d28,1195:d5,
             1196:d6,1197:d18,1198:d0,1199:d1,1200:d10,1201:d21,1202:d12,1203:d22,1204:d14,1205:d7,1206:d8,1207:d20,1208:d23,1209:d11,
             1210:d25,1211:d29,1212:d21,1213:d28,1214:d5,1215:d6,1216:d27,1217:d0,1218:d1,1219:d10,1220:d11,1221:d4,1222:d13,1223:d26,
             1224:d7,1225:d19,1226:d20,1227:d23,1228:d0,1229:d25,1230:d30,1231:d3,1232:d28,1233:d16,1234:d17,1235:d27,1236:d19,1237:d1,
             1238:d10,1239:d11,1240:d12,1241:d13,1242:d26,1243:d7,1244:d8,1245:d20,1246:d23,1247:d24,1248:d1,1249:d30,1250:d14,1251:d28,
             1252:d5,1253:d17,1254:d27,1255:d19,1256:d9,1257:d29,1258:d21,1259:d4,1260:d13,1261:d6,1262:d7,1263:d8,1264:d17,1265:d23,
             1266:d24,1267:d25,1268:d30,1269:d14,1270:d15,1271:d16,1272:d6,1273:d27,1274:d19,1275:d9,1276:d10,1277:d21,1278:d4,1279:d13,
             1280:d26,1281:d7,1282:d8,1283:d20,1284:d23,1285:d11,1286:d12,1287:d31,1288:d14,1289:d15,1290:d16,1291:d6,1292:d27,1293:d0,
             1294:d1,1295:d29,1296:d21,1297:d28,1298:d5,1299:d26,1300:d15,1301:d8,1302:d20,1303:d23,1304:d11,1305:d12,1306:d31,1307:d14,
             1308:d28,1309:d16,1310:d17,1311:d18,1312:d0,1313:d25,1314:d29,1315:d21,1316:d4,1317:d32,1318:d26,1319:d7,1320:d8,1321:d9,
             1322:d10,1323:d11,1324:d25,1325:d31,1326:d14,1327:d28,1328:d5,1329:d17,1330:d18,1331:d0,1332:d1,1333:d29,1334:d21,1335:d4,
             1336:d13,1337:d6,1338:d27,1339:d19,1340:d9,1341:d10,1342:d11,1343:d25,1344:d30,1345:d14,1346:d15,1347:d16,1348:d17,1349:d23,
             1350:d24,1351:d1,1352:d10,1353:d21,1354:d4,1355:d32,1356:d26,1357:d27,1358:d19,1359:d9,1360:d23,1361:d11,1362:d25,1363:d30,
             1364:d3,1365:d15,1366:d8,1367:d17,1368:d18,1369:d24,1370:d1,1371:d29,1372:d21,1373:d28,1374:d5,1375:d6,1376:d7,1377:d19,
             1378:d9,1379:d23,1380:d24,1381:d12,1382:d31,1383:d14,1384:d15,1385:d8,1386:d17,1387:d18,1388:d0,1389:d1,1390:d29,1391:d21,
             1392:d4,1393:d5,1394:d6,1395:d7,1396:d8,1397:d9,1398:d23,1399:d11,1400:d12,1401:d31,1402:d26,1403:d15,1404:d16,1405:d17,
             1406:d18,1407:d0,1408:d1,1409:d30,1410:d3,1411:d28,1412:d5,1413:d6,1414:d7,1415:d8,1416:d20,1417:d10,1418:d11,1419:d12,
             1420:d31,1421:d26,1422:d15,1423:d16,1424:d6,1425:d18,1426:d0,1427:d1,1428:d29,1429:d3,1430:d28,1431:d5,1432:d26,1433:d27,
             1434:d19,1435:d9,1436:d10,1437:d21,1438:d12,1439:d31,1440:d14,1441:d15,1442:d16,1443:d17,1444:d18,1445:d24,1446:d25,1447:d29,
             1448:d21,1449:d28,1450:d32,1451:d26,1452:d7,1453:d19,1454:d9,1455:d10,1456:d11,1457:d12,1458:d31,1459:d14,1460:d28,1461:d8,
             1462:d20,1463:d18,1464:d24,1465:d25,1466:d29,1467:d21,1468:d4,1469:d33,1470:d6,1471:d27,1472:d19,1473:d1,1474:d10,1475:d11,
             1476:d25,1477:d31,1478:d14,1479:d15,1480:d16,1481:d20,1482:d23,1483:d24,1484:d1,1485:d29,1486:d21,1487:d4,1488:d32,1489:d6,
             1490:d27,1491:d19,1492:d9,1493:d10,1494:d11,1495:d12,1496:d30,1497:d26,1498:d7,1499:d8,1500:d17,1501:d23,1502:d24,1503:d1,
             1504:d29,1505:d3,1506:d28,1507:d33,1508:d6,1509:d27,1510:d19,1511:d9,1512:d23,1513:d11,1514:d12,1515:d31,1516:d14,1517:d7,
             1518:d8,1519:d17,1520:d18,1521:d24,1522:d1,1523:d29,1524:d3,1525:d15,1526:d16,1527:d6,1528:d7,1529:d19,1530:d9,1531:d10,
             1532:d11,1533:d4,1534:d32,1535:d26,1536:d15,1537:d8,1538:d17,1539:d18,1540:d0,1541:d25,1542:d30,1543:d3,1544:d28,1545:d33,
             1546:d6,1547:d7,1548:d8,1549:d9,1550:d10,1551:d21,1552:d12,1553:d32,1554:d26,1555:d15,1556:d16,1557:d20,1558:d18,1559:d24,
             1560:d25,1561:d30,1562:d3,1563:d28,1564:d32,1565:d6,1566:d27,1567:d19,1568:d9,1569:d29,1570:d21,1571:d12,1572:d31,1573:d26,
             1574:d15,1575:d16,1576:d17,1577:d23,1578:d24,1579:d25,1580:d30,1581:d3,1582:d28,1583:d28,1584:d5,1585:d17,1586:d34,1587:d24,
             1588:d1,1589:d2,1590:d21,1591:d4,1592:d13,1593:d6,1594:d35,1595:d19,1596:d9,1597:d36,1598:d11,1599:d25,1600:d2,1601:d14,
             1602:d15,1603:d16,1604:d17,1605:d34,1606:d24,1607:d1,1608:d36,1609:d21,1610:d4,1611:d13,1612:d26,1613:d37,1614:d19,1615:d9,
             1616:d38,1617:d11,1618:d12,1619:d22,1620:d3,1621:d7,1622:d8,1623:d17,1624:d37,1625:d24,1626:d1,1627:d36,1628:d21,1629:d28,
             1630:d5,1631:d6,1632:d35,1633:d0,1634:d9,1635:d38,1636:d24,1637:d12,1638:d22,1639:d14,1640:d15,1641:d8,1642:d20,1643:d37,
             1644:d0,1645:d1,1646:d36,1647:d21,1648:d4,1649:d16,1650:d6,1651:d27,1652:d19,1653:d9,1654:d38,1655:d11,1656:d12,1657:d13,
             1658:d26,1659:d15,1660:d16,1661:d20,1662:d34,1663:d0,1664:d1,1665:d2,1666:d3,1667:d28,1668:d5,1669:d6,1670:d27,1671:d19,
             1672:d20,1673:d38,1674:d11,1675:d12,1676:d22,1677:d26,1678:d15,1679:d16,1680:d17,1681:d34,1682:d24,1683:d25,1684:d2,1685:d14,
             1686:d28,1687:d5,1688:d26,1689:d27,1690:d19,1691:d9,1692:d38,1693:d21,1694:d4,1695:d13,1696:d14,1697:d15,1698:d16,1699:d17,
             1700:d37,1701:d0,1702:d1,1703:d36,1704:d21,1705:d4,1706:d13,1707:d14,1708:d15,1709:d8,1710:d20,1711:d38,1712:d24,1713:d12,
             1714:d22,1715:d3,1716:d28,1717:d16,1718:d17,1719:d37,1720:d0,1721:d1,1722:d36,1723:d21,1724:d12,1725:d13,1726:d26,1727:d7,
             1728:d8,1729:d9,1730:d38,1731:d24,1732:d25,1733:d22,1734:d3,1735:d28,1736:d5,1737:d17,1738:d37,1739:d0,1740:d9,1741:d36,
             1742:d21,1743:d12,1744:d13,1745:d6,1746:d7,1747:d19,1748:d20,1749:d38,1750:d24,1751:d25,1752:d2,1753:d14,1754:d15,1755:d16,
             1756:d17,1757:d34,1758:d0,1759:d9,1760:d38,1761:d21,1762:d4,1763:d13,1764:d26,1765:d27,1766:d19,1767:d20,1768:d34,1769:d24,
             1770:d25,1771:d2,1772:d3,1773:d15,1774:d16,1775:d17,1776:d37,1777:d0,1778:d1,1779:d36,1780:d21,1781:d28,1782:d5,1783:d26,
             1784:d7,1785:d19,1786:d20,1787:d34,1788:d24,1789:d12,1790:d22,1791:d14,1792:d28,1793:d16,1794:d17,1795:d27,1796:d19,1797:d1,
             1798:d36,1799:d21,1800:d4,1801:d13,1802:d14,1803:d15,1804:d16,1805:d17,1806:d34,1807:d24,1808:d1,1809:d22,1810:d3,1811:d4,
             1812:d13,1813:d6,1814:d27,1815:d19,1816:d9,1817:d36,1818:d21,1819:d12,1820:d22,1821:d14,1822:d15,1823:d16,1824:d17,1825:d34,
             1826:d24,1827:d25,1828:d2,1829:d3,1830:d4,1831:d13,1832:d26,1833:d35,1834:d19,1835:d9,1836:d38,1837:d21,1838:d12,1839:d22,
             1840:d14,1841:d15,1842:d8,1843:d20,1844:d34,1845:d24,1846:d25,1847:d2,1848:d21,1849:d28,1850:d5,1851:d6,1852:d35,1853:d0,
             1854:d9,1855:d38,1856:d11,1857:d12,1858:d22,1859:d14,1860:d15,1861:d8,1862:d20,1863:d34,1864:d0,1865:d25,1866:d2,1867:d21,
             1868:d4,1869:d16,1870:d17,1871:d37,1872:d19,1873:d9,1874:d38,1875:d11,1876:d12,1877:d13,1878:d26,1879:d7,1880:d8,1881:d20,
             1882:d34,1883:d0,1884:d1,1885:d2,1886:d3,1887:d28,1888:d5,1889:d17,1890:d27,1891:d19,1892:d20,1893:d38,1894:d11,1895:d12,
             1896:d13,1897:d26,1898:d7,1899:d8,1900:d17,1901:d37,1902:d0,1903:d9,1904:d36,1905:d3,1906:d4,1907:d13,1908:d26,1909:d7,
             1910:d8,1911:d20,1912:d34,1913:d11,1914:d12,1915:d22,1916:d14,1917:d15,1918:d16,1919:d6,1920:d35,1921:d0,1922:d1,1923:d36,
             1924:d21,1925:d28,1926:d13,1927:d26,1928:d15,1929:d8,1930:d20,1931:d38,1932:d11,1933:d12,1934:d22,1935:d3,1936:d28,1937:d16,
             1938:d17,1939:d37,1940:d0,1941:d25,1942:d2,1943:d21,1944:d4,1945:d13,1946:d26,1947:d7,1948:d8,1949:d9,1950:d38,1951:d11,
             1952:d25,1953:d22,1954:d14,1955:d28,1956:d5,1957:d17,1958:d34,1959:d0,1960:d1,1961:d2,1962:d21,1963:d4,1964:d13,1965:d26,
             1966:d27,1967:d19,1968:d20,1969:d38,1970:d11,1971:d25,1972:d2,1973:d14,1974:d15,1975:d16,1976:d17,1977:d34,1978:d24,1979:d1,
             1980:d36,1981:d21,1982:d4,1983:d13,1984:d26,1985:d35,1986:d19,1987:d9,1988:d38,1989:d11,1990:d25,1991:d2,1992:d3,1993:d15,
             1994:d8,1995:d17,1996:d37,1997:d24,1998:d1,1999:d36,2000:d21,2001:d28,2002:d5,2003:d6,2004:d7,2005:d19,2006:d9,2007:d34,
             2008:d24,2009:d12,2010:d22,2011:d14,2012:d15,2013:d8,2014:d17,2015:d37,2016:d0,2017:d1,2018:d36,2019:d21,2020:d4,2021:d5,
             2022:d6,2023:d7,2024:d8,2025:d9,2026:d38,2027:d11,2028:d12,2029:d13,2030:d14,2031:d15,2032:d16,2033:d17,2034:d37,2035:d0,
             2036:d1,2037:d2,2038:d3,2039:d28,2040:d5,2041:d6,2042:d7,2043:d8,2044:d20,2045:d38,2046:d11,2047:d12,2048:d22,2049:d26,
             2050:d15,2051:d16,2052:d6,2053:d37,2054:d0,2055:d1,2056:d2,2057:d3,2058:d28,2059:d5,2060:d26,2061:d27,2062:d19,2063:d9,
             2064:d38,2065:d21,2066:d12,2067:d22,2068:d14,2069:d15,2070:d16,2071:d17,2072:d37,2073:d24,2074:d25,2075:d2,2076:d21,
             2077:d28,2078:d5,2079:d26,2080:d7,2081:d19,2082:d9,2083:d38,2084:d11,2085:d12,2086:d22,2087:d14,2088:d28,2089:d8,2090:d20,
             2091:d34,2092:d24,2093:d25,2094:d2,2095:d21,2096:d4,2097:d5,2098:d6,2099:d27,2100:d19,2101:d9,2102:d38,2103:d24,2104:d1,
             2105:d2,2106:d3,2107:d28,2108:d5,2109:d17,2110:d37,2111:d0,2112:d9,2113:d36,2114:d11,2115:d12,2116:d22,2117:d26,2118:d7,
             2119:d8,2120:d20,2121:d38,2122:d24,2123:d25,2124:d2,2125:d14,2126:d15,2127:d16,2128:d6,2129:d37,2130:d0,2131:d9,2132:d38,
             2133:d21,2134:d4,2135:d13,2136:d26,2137:d7,2138:d8,2139:d20,2140:d34,2141:d24,2142:d25,2143:d2,2144:d3,2145:d15,2146:d16,
             2147:d6,2148:d35,2149:d0,2150:d9,2151:d36,2152:d21,2153:d4,2154:d5,2155:d26,2156:d15,2157:d8,2158:d20,2159:d34,2160:d24,
             2161:d12,2162:d22,2163:d14,2164:d28,2165:d16,2166:d6,2167:d35,2168:d19,2169:d1,2170:d36,2171:d21,2172:d4,2173:d5,2174:d26,
             2175:d15,2176:d16,2177:d20,2178:d34,2179:d24,2180:d25,2181:d22,2182:d14,2183:d28,2184:d5,2185:d17,2186:d27,2187:d0,2188:d1,
             2189:d2,2190:d21,2191:d4,2192:d13,2193:d26,2194:d7,2195:d8,2196:d20,2197:d38,2198:d11,2199:d25,2200:d2};
  
    const listColors = [
      "зелёно", "зелёно", "красно", "красно", "жёлто", "жёлто", "бело", "бело", "сине", "сине"];
    const listEnd = [
      "й", "го", "го", "го","го", "й","й", "й", "й", "го", "й", "й"];
    const listAnimal = [
      "крысы", "быка", "тигра", "кролика", "дракона", "змеи", "лошади", "козы", "обезьяны", "петуха", "собаки", "свиньи" ];
 
function ChineseNewYear(year, offset) {
    year = parseInt(year);
    if(isNaN(year) || (year < 1000 || year > 2200)) year = new Date().getFullYear();
    offset = parseFloat(offset);
    (!isNaN(offset)) && ((offset>=0) ? (year += offset) : (year += offset));
 
    const infoYear = dates[year];
    let d = infoYear[0];
    if(d < 10) d = '0' + d;
    
    let m = infoYear[1];
    if(m < 10) m = '0' + m;
    
    const year1564 = year - 1564;
    const chineseNumYear = year + 2697;
 
    return {
        date:   d + '.' + m + '.' + year,
        color:  listColors[year1564 % listColors.length],
        end:    listEnd[year1564 % listEnd.length],
        animal: listAnimal[year1564 % listAnimal.length],
        chineseNumYear: chineseNumYear,
        cycleNum:       Math.floor(chineseNumYear / 60) + 1,
        yearCycle:      (chineseNumYear % 60 === 0 ? 6 : chineseNumYear % 60) + " год в 60-летнем цикле.",
    };
}
 
function printDate(data) {
    if("string" == typeof data) {
        data = data.match(/\b\d{4}\b/);
    } else if (data instanceof Date) {
        data = data.getFullYear();
    }
    let infoStart = ChineseNewYear(data);
    let infoEnd = ChineseNewYear(data, 1);
    
    return `год ${infoStart.color}${infoStart.end} ${infoStart.animal}.
    <br/>${infoStart.date}-${infoEnd.date}
    <br/>${infoStart.chineseNumYear} г.
    <br/>${infoStart.cycleNum} цикл
    <br/>${infoStart.yearCycle}`;
}
 
 
function ChineseZodiac() {
  var infoElement = document.getElementById("info");
  infoElement.innerHTML = printDate(this.value);
}
 
 
    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>
Добавлено через 6 минут
Вот теперь код стал очень прозрачный и чистый. Думаю бел ка разберётся в коде, без тонны циклов и рекурсий.

Кликните здесь для просмотра всего текста
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
function ChineseNewYear(year, offset) {
    year = parseInt(year);
    if(isNaN(year) || (year < 1000 || year > 2200)) year = new Date().getFullYear();
    offset = parseFloat(offset);
    (!isNaN(offset)) && ((offset>=0) ? (year += offset) : (year += offset));
 
    const infoYear = dates[year];
    let d = infoYear[0];
    if(d < 10) d = '0' + d;
    
    let m = infoYear[1];
    if(m < 10) m = '0' + m;
    
    const year1564 = year - 1564;
    const chineseNumYear = year + 2697;
 
    return {
        date:   d + '.' + m + '.' + year,
        color:  listColors[year1564 % listColors.length],
        end:    listEnd[year1564 % listEnd.length],
        animal: listAnimal[year1564 % listAnimal.length],
        chineseNumYear: chineseNumYear,
        cycleNum:       Math.floor(chineseNumYear / 60) + 1,
        yearCycle:      (chineseNumYear % 60 === 0 ? 6 : chineseNumYear % 60) + " год в 60-летнем цикле.",
    };
}
0
-11 / 6 / 0
Регистрация: 23.02.2023
Сообщений: 431
02.02.2024, 23:34  [ТС]
Цитата Сообщение от Именч Посмотреть сообщение
Этот массив представляет собой таблицу для преобразования года по китайскому лунному календарю в григорианский календарь. Каждый элемент массива представляет собой массив из 16 чисел. Первый элемент вложенного массива - это год китайского календаря, а остальные элементы представляют собой значения для различных месяцев и дней.

Например, в первом вложенном массиве [1917, 23, 53, 111, 141, 170, 200, 230, 259, 289, 319, 348, 378, 82, 2, 384]:
- Первый элемент 1917 представляет собой год китайского календаря.
- Следующие 12 элементов (23, 53, 111, 141, 170, 200, 230, 259, 289, 319, 348, 378) представляют собой дни конца каждого месяца в григорианском календаре.
- Последние четыре элемента (82, 2, 384) представляют собой значения для различных случаев, связанных с преобразованием даты
немного не так, первое число это правильно год, 2 и 3 как то связаны с датой нового года, поскольку если 2 и 3 повторяются в разных массивах (для разных годов) то и даты (дд.мм) нового года одинаковы, а последнее число это количество дней в году, бегло читала про структуру года, количество месяцев не фиксированной, зависит от количества новолуний в году, какой то месяц может повторится и добавить к коротком году 30-31день, тогда длина года 38х дней, а если новолуний 12, то длина года 35х дней
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
02.02.2024, 23:34

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


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

Или воспользуйтесь поиском по форуму:
60
Ответ Создать тему
Новые блоги и статьи
Химера правил, администрации порталов, законы и беззаконие.
Hrethgir 26.06.2026
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11904&stc=1&d=1782459438 У меня сейчас так везде по форуму - не могу создавать сообщений, но запись по случаю этому. . .
сукцессия 5
anaschu 26.06.2026
ПЛАН РАЗРАБОТКИ математической модели сукцессии микоризных систем Переход AM → EcM (Endo + ErM) · Шумилов А. С. · ИФХиБПП РАН · Пущино · 2026 . . .
сукцессия 4
anaschu 25.06.2026
Более детализированный план разработки План доработки модели динамики микоризных симбиозов (EcM с гистерезисом) Цель: Реализовать логику переключения между эрикоидным (ErM) и эктомикоризным. . .
сукцессия 3
anaschu 25.06.2026
Примерный план работ по модели
сукцессия 2
anaschu 25.06.2026
параметризировочная калибровочная таблица будущей модели
Многофункциональное здание: как одно здание порождает конфликты требований, которые никто не планировал (мат мет мод 29)
anaschu 23.06.2026
Многофункциональное здание: как одно здание порождает конфликты требований, которые никто не планировал Материалы для обсуждения с МГСУ · 2026 Рисунки внутри приложенного ворд файла. Что за. . .
28. Конкретное развертывание плана номер 1 из поста номер 27
anaschu 22.06.2026
Можно ли из модели получить конкретные строительные требования? Честно — напрямую из текущей модели такие ответы не получить. Но цепочка логики есть, и она не такая длинная. Где разрыв . . .
27. Планы на разработку функциональных требований к строительству внутри модели пищеблока (или не только его?)
anaschu 22.06.2026
Что уже реализовано и даёт конфликты «бесплатно» Самый простой конфликт уже работает — конфликт за ресурс-работника. Заданий больше, чем доступных поваров → очередь в queue1. Это прямое отражение. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru