Data valog Anzelmas Tamuš metskaitli. Metuodā: * gautė šėndėinėnė data * gautė data ėš grėgalėškuojė * gautė ciela metskaitli ont metu
Find a file
2026-06-23 17:36:25 +03:00
cmd/api added rule perskaiciuojant 2026-06-23 17:36:25 +03:00
.gitignore add idea to gitignore 2022-06-01 14:19:15 +03:00
calendar.go added rule perskaiciuojant 2026-06-23 17:36:25 +03:00
calendar_test.go added rule perskaiciuojant 2026-06-23 17:36:25 +03:00
go.mod paėiškuojėmā datā, dā tou patio papaišīms 2026-06-16 05:49:58 +03:00
LICENSE Init 2022-06-01 14:17:56 +03:00
README.md added rule perskaiciuojant 2026-06-23 17:36:25 +03:00
TODO.md changed /today to /day 2026-06-16 06:31:01 +03:00

lllaetu-data

lllaetu-data yra Go API religinei mėnulio kalendoriaus versijai tirti ir generuoti.

Projektas šiuo metu yra tyrimo stadijoje: taisyklės dar nėra galutinės, todėl API leidžia lyginti kelis 13-ojo mėnesio pridėjimo būdus.

Nuorodos:

Metų numeracija

Dabartiniai metai yra 30.38.

Skaitinė reikšmė yra 3038, bet rodymui naudojamas taškas, kad šie metai nesusimaišytų su grigališkais metais.

2026 grigališki metai patenka į 3038 kalendoriaus metus = 30.38
religious_year = gregorian_year + 1012

API grąžina abu laukus:

{
  "year": 3038,
  "year_text": "30.38"
}

Pagal dabartinį modelį 30.38 prasideda 2025-12-14 kaip 30.37.XII.13 ir baigiasi 2026-12-31. Tai yra Uosio metai.

Pagrindinės kalendoriaus taisyklės

Ši versija modeliuoja tokias taisykles:

  • patikimas atskaitos taškas: 30.00 kalendorius prasideda 1987-12-22, tai yra 29.99.XII.13;
  • 30.00 nėra Uosio metai;
  • kalendoriaus metai pradedami nuo ankstesnių metų paskutinio mėnesio 13 dienos: XII.13 arba, jei ankstesni metai turėjo Uosį, XIII.13;
  • mėnuo neprasideda jaunatimi;
  • astronominė jaunatis modelyje laikoma 11 mėnesio dieną;
  • matoma jaunatis modelyje laikoma 13 mėnesio dieną;
  • nelyginiai mėnesiai turi 29 dienas;
  • lyginiai mėnesiai turi 30 dienų;
  • 12 pirmų mėnesių vardai sutampa su lietuviškais mėnesių vardais: Sausis, Vasaris, Kovas, Balandis, Gegužė, Birželis, Liepa, Rugpjūtis, Rugsėjis, Spalis, Lapkritis, Gruodis;
  • 13-asis mėnuo vadinamas Uosis;
  • Uosis pagal nutylėjimą turi 30 dienų;
  • tyrimui galima naudoti uosis=29, tada Uosis turi 29 dienas;
  • Uosis pridedamas pagal pasirinktą tyrimo taisyklę.

Žiemos saulėgrįža yra svarbi religinė atrama, bet šiame modelio etape ji dar nėra aktyvi API taisyklė. Dabar pagrindinis klausimas yra, kaip dažnai reikia pridėti Uosį, kad kalendorius per daug nenutoltų nuo Saulės metų.

Tikras matomumas priklausytų nuo horizonto, debesuotumo ir religinės patvirtinimo tvarkos. Dabartiniame modelyje tai supaprastinta: 11 diena yra jaunatis, 13 diena yra matoma jaunatis.

Uosio pridėjimo taisyklės

API palaiko šias taisykles:

Taisyklė Reikšmė
every4 tradiciškai paprasta: Uosis kas ketvirti metai
4x3 kartojami tarpai tarp Uosio metų: 4, 3, 3, 4 metai
metonic19 7 Uosio metai per 19 metų ciklą
solar skaičiuojamas geriausias priartėjimas prie Saulės metų
perskaiciuojant solar Uosio metai, bet Uosyje dienos pernumeruojamos taip, kad XIII.13 būtų 2 dienos po astronominės jaunaties
none be Uosio, tik baziniam palyginimui

Saulės metų artinimas:

paprasti metai = 354 dienos
Uosio metai, kai uosis=30 = 384 dienos
Uosio metai, kai uosis=29 = 383 dienos
reikalinga Uosio metų dalis = (365.2425 - 354) / 30 = apie 0.37475

Tai reiškia, kad per 1000 metų reikia maždaug 374.733 Uosio metų. Taisyklė every4 duoda tik 250, todėl ji yra per reta, jei norime laikytis arti Saulės kalendoriaus.

Jei tiriama su uosis=29, solar taisyklė perskaičiuoja dažnį pagal 29 dienų papildomą mėnesį. Nuo 30.38 tai duoda 38 Uosio metus per 100 metų ir 387 Uosio metus per 1000 metų; skirtumas nuo Saulės intervalo yra apie -22 dienos per 100 metų ir -19 dienų per 1000 metų.

perskaiciuojant taisyklė Uosio metus parenka kaip solar, bet pačiame Uosyje ieško artimiausios datos aplink planuotą XIII.13, kuri yra 2 dienos po astronominės jaunaties. Ta data tampa XIII.13. Jei ji ateina anksčiau, dalis Uosio dienų numerių praleidžiama, pvz. po XIII.07 gali eiti XIII.13.

Tyrimo rezultatai

Pradžia: 30.38 (2026 grigališki metai).

Taisyklė 100 metų skirtumas 100 metų Uosiai 1000 metų skirtumas 1000 metų Uosiai Didžiausias nuokrypis per 1000 metų
every4 -374 dienos 25 -3742 dienos 250 3743 dienos
4x3 -284 dienos 28 -2692 dienos 285 2690 dienų
metonic19 -14 dienų 37 -172 dienos 369 194 dienos
solar +16 dienų 38 +8 dienos 375 22 dienos

Išvada: every4 yra paprasta istorinė taisyklė, bet Saulės metų atžvilgiu ji per trumpa. 4x3 prideda Uosį dažniau, tačiau per 1000 metų vis tiek atsilieka apie 2692 dienas. Per 1000 metų every4 atsiliktų apie 3742 dienas, tai yra daugiau nei 10 metų.

Šiuo metu geriausias kandidatas tyrimui yra solar: per 1000 metų jis baigia tik +8 dienomis nuo grigališko intervalo, o didžiausias susikaupęs nuokrypis yra apie 22 dienas.

Pirmi solar Uosio metai nuo 30.38:

30.38, 30.41, 30.44, 30.46, 30.49, 30.52,
30.54, 30.57, 30.60, 30.62, 30.65, 30.68,
30.70, 30.73, 30.76, 30.78, 30.81, 30.84,
30.86, 30.89, 30.92, 30.94, 30.97, 31.00

Matoma jaunatis ir 13-oji mėnesio diena

Papildomai API skaičiuoja, kaip modelyje laikoma jaunatis siejasi su mėnesio dienomis.

Dabartinė taisyklė:

  • 11 mėnesio diena - jaunatis (🌑);
  • 13 mėnesio diena - matoma jaunatis;
  • 18 mėnesio diena - priešpilnis (🌓);
  • 26 mėnesio diena - pilnatis (🌕);
  • 3 mėnesio diena - delčia (🌗).

Pagal dabartinį modelį:

12 mėnesių metai:
12 * 29.530588853 - 354 = +0.367 dienos

13 mėnesių metai, kai uosis=30:
13 * 29.530588853 - 384 = -0.102 dienos

13 mėnesių metai, kai uosis=29:
13 * 29.530588853 - 383 = +0.898 dienos

Interpretacija:

  • paprastais 12 mėnesių metais tikra mėnulio eiga yra apie 0.367 dienos ilgesnė už fiksuotą 30/29 kalendorių, todėl matoma jaunatis slenka vėliau prieš fiksuotas kalendoriaus dienas;
  • Uosio metais su uosis=30 fiksuotas kalendorius yra apie 0.102 dienos ilgesnis už 13 tikrų mėnulio ciklų, todėl matoma jaunatis truputį slenka anksčiau;
  • Uosio metais su uosis=29 fiksuotas kalendorius yra apie 0.898 dienos trumpesnis už 13 tikrų mėnulio ciklų, todėl matoma jaunatis slenka vėliau;
  • pačiame taisyklių modelyje matoma jaunatis yra tiksliai 13 dieną, todėl day13_moon_drift.average_difference_days = 0.

Pavyzdžiai nuo 30.38 pradžios:

Metai Mėnuo 13-oji diena Artimiausia matoma jaunatis Skirtumas
30.37 12 2025-12-14 2025-12-14 0
30.38 1 2026-01-13 2026-01-13 0
30.38 2 2026-02-11 2026-02-11 0
30.38 3 2026-03-13 2026-03-13 0

Šis skaičiavimas padeda atskirai matyti du dalykus: Saulės metų tikslumą ir teorinį 30/29 mėnesių santykį su sinodiniu mėnesiu. Uosio taisyklė pirmiausia sprendžia Saulės metų artumą, o ne tikro dangaus stebėjimo protokolą.

HTML kalendorius

Žmogui skaitomas kalendorius pasiekiamas:

GET /calendar?year=3038&leap_rule=solar

HTML matrica:

  • X ašis: 14 mėnulio laipsnių stulpelių, ne mėnesiai;
  • Y ašis: 4 grigališkos savaitės, kiekviena prasideda sekmadieniu Sv;
  • kalendorius pradedamas ankstesnių metų paskutinio mėnesio 13 diena;
  • langelyje rodoma kalendoriaus data - grigališka data;
  • visos datos yra išrašomos, jos nėra praleidžiamos;
  • metai rašomi tik ten, kur prasideda metų atkarpa;
  • mėnuo rašomas tik ten, kur prasideda mėnesio atkarpa;
  • ta pati trumpinimo taisyklė taikoma ir grigališkai datai: grigališki metai ir mėnuo rodomi tik naujų metų arba naujo mėnesio pradžioje;
  • metų ir mėnesio pradžios HTML vaizde paryškinamos abiejose datose;
  • jei datos atkarpa prasideda ne sekmadienį, prieš ją įdedami tušti <br>: antradieniui dedami 2 <br>, trečiadieniui 3 ir t. t.;
  • dešinėje fazė rodoma tik tada, kai fazė prasideda: 3 dieną 🌗, 11 dieną 🌑, 18 dieną 🌓, 26 dieną 🌕;
  • laipsnio stulpelis turi 4 savaites, t. y. 28 grigališkas dienas.
  • metų pabaigoje paskutinis mėnuo rodomas pilnas;
  • jei paskutinio mėnesio likutis nebetelpa paskutiniame mėnulio laipsnyje, jis keliamas į 0 laipsnio viršų;
  • jei perkeltas likutis persidengia su einamojo kalendoriaus pradžia, ankstesnės savaitės rodomos pilnai;
  • pjūvis taikomas tik savaitei, kurioje prasideda einamasis kalendorius;
  • perkelto likučio savaitės po pjūvio neberodomos;
  • paskutinė neperdengta perkelto likučio data pjūvio savaitėje gauna 3px raudoną border-bottom, kad matytųsi padalijimas.

HTML puslapis turi nuorodas į ankstesnius ir kitus metus. Nuorodos išsaugo pasirinktą leap_rule. Puslapyje taip pat galima perjungti solar, perskaiciuojant, metonic19, 4x3, every4 ir none taisykles.

30.00 pavyzdys:

0 laipsnis, Sv 4, antradienis: 29.99.XII.13 - 1987.XII.22
0 laipsnyje lieka tik 5 datos: XII.13-XII.17
1 laipsnis tęsia nuo 29.99.XII.18
30.00.I.01 patenka į 1 laipsnį, Sv 2 savaitę: 1988.I.09

Paleidimas

go run ./cmd/api

Pagal nutylėjimą API klausosi 8080 porto.

Kitas portas:

PORT=8081 go run ./cmd/api

Maršrutai

HTML puslapiai:

GET /day
GET /day?date=2023-04-01
GET /calendar?year=3038

JSON API:

GET /api/health
GET /api/today
GET /api/convert?date=2026-06-15
GET /api/year?year=3038
GET /api/research?start=3038&years=100&leap_rule=solar
GET /api/research/compare?start=3038&years=1000

Bendri parametrai:

  • leap_rule=solar|perskaiciuojant|metonic19|4x3|every4|none
  • epoch_year=3000
  • visible_delay_days=1
  • uosis=30|29

Pavyzdžiai:

curl 'http://localhost:8080/day'
curl 'http://localhost:8080/day?date=2023-04-01'
curl 'http://localhost:8080/calendar?year=3038'
curl 'http://localhost:8080/api/today'
curl 'http://localhost:8080/api/year?year=3038'
curl 'http://localhost:8080/api/research?start=3038&years=1000&leap_rule=every4'
curl 'http://localhost:8080/api/research/compare?start=3038&years=1000'

Go versija

Projektas taiko:

go 1.26.4

Lokali naudota versija:

go version go1.26.4-X:nodwarf5 linux/amd64

Testai

go test ./...

Jei Go negali rašyti į standartinį cache katalogą:

GOCACHE=/tmp/lllaetu-go-cache go test ./...