Kalendarz wieczny

Niniejszy kalendarz służy określeniu jakim dniem tygodnia był lub będzie dzień z zadanej daty. Przedstawiony tutaj algorytm działa w zakresie dat: od 1 stycznia 0 do 4 października 1582 oraz od 15 października 1582 do 31 grudnia 2499.

Zasada działania

Krok 1. Weź datę (np. 15 maja 1795). Weź dwie pierwsze cyfry roku (17) i znajdź je w dolnej, lewej części tabeli 1. Dwie ostatnie cyfry roku znajdź w części górnej prawej (95). Odczytaj liczbę z przecięcia kolumny (zawierającej końcówkę roku) i wiersza (zawierającego początek numeru roku). Zapamiętaj tę liczbę (5).

Pamiętaj, że…

  • Lata przestępne:
    • w kalendarzu gregoriańskim: zaznaczone są nawiasem kwadratowym. Są to lata:
      • podzielne przez 4,
      • i nie są podzielne przez 100,
      • za wyjątkiem tych lat, które są podzielne przez 400;
    • w kalendarzu juliańskim:
      • wszystkie podzielne przez 100.
  • Czym różnią się?
    • 15: jeżeli data jest z zakresu od 1 stycznia 0 do 4 października 1582;
    • [15]: jeżeli data jest z zakresu od 15 października 1582 do 31 grudnia 2499.
  • Dni od 5 października 1582 do 14 października 1582 nie istnieją.
    tabela 1
    po prawej: koniec   |  00  01  02  03     [04] 05
    numeru roku (xx95)  |  06  07     [08] 09  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
    rok 1795            |  51     [52] 53  54  55
        \/              | [56] 57  58  59     [60] 61
        |               |  62  63     [64] 65  66  67
        |               |     [68] 69  70  71     [73]
        |               |  73  74  75     [76] 77  78
        V               |  79     [80] 81  82  83
                        | [84] 85  86  87     [88] 89
    poniżej: początek   |  90  91     [92] 93  94  95
    numeru roku (17xx)  |     [96] 97  98  99
    --------------------+----------------------------
    00  07  14 [17][21] |   6   0   1   2   3   4   5
    01  08  15          |   5   6   0   1   2   3   4
    02  09     [18][22] |   4   5   6   0   1   2   3
    03  10              |   3   4   5   6   0   1   2
    04  11 [15][19][23] |   2   3   4   5   6   0   1
    05  12 [16][20][24] |   1   2   3   4   5   6   0
    06  13              |   0   1   2   3   4   5   6

Krok 2. W tabeli 2 odczytaj liczbę z przecięcia wiersza oznaczonego liczbą odczytaną z tabeli 1 (5) oraz kolumny oznaczonej miesiącem (maj). W przykładzie będzie to (6).

Pamiętaj, że…

  • sty, lut: odnoszą się do roku nieprzestępnego;
  • [sty], [lut]: odnoszą się do roku przestępnego.
    tabela 2
    m-c | maj   sie   lut   cze   wrz   kwi   sty
        |      [lut]  mar         gru   lip   paź
        |             lis              [sty]
    ----+-----------------------------------------
     1  |  2     3     4     5     6     0     1
     2  |  3     4     5     6     0     1     2
     3  |  4     5     6     0     1     2     3
     4  |  5     6     0     1     2     3     4
     5  |  6     0     1     2     3     4     5
     6  |  0     1     2     3     4     5     6
     0  |  1     2     3     4     5     6     0

Krok 3. W tabeli 3 odczytaj dzień tygodnia z przecięcia wiersza oznaczonego liczbą odczytaną z tabeli 2 (6) oraz kolumny oznaczonej numerem dnia miesiąca (15). W przykładzie będzie to (pią – piątek).

    tabela 3
       |   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
    ---+----------------------------
     0 | sob  ND pon wto śro czw pią
     1 |  ND pon wto śro czw pią sob
     2 | pon wto śro czw pią sob  ND
     3 | wto śro czw pią sob  ND pon
     4 | śro czw pią sob  ND pon wto
     5 | czw pią sob  ND pon wto śro
     6 | pią sob  ND pon wto śro czw