Questo documento, a parte l'aspetto giocoso e scherzoso di proporre un insolto tipo di calendario ( Lustrale ) basato sulle settimane e non sui giorni, può avere una qualche utilità come applicazione di vari trucchi Javascript e CSS che vanno scoperti anche guardando il sorgente HTML.
In rete: http://www.elegio.it/omnia/js/lustrale.html

Bei libri sul tema:
Giovanni Paltrinieri
 Calendario Lunario  ( la misura del tempo dalla preistoria a oggi )  ISBN 9788882193751 - Editore Calderini edagricole - novembre 2000

DESCRIZIONE : il volume pone al centro dell'attenzione il tempo come entità misurabile in tutte le sue implicazioni astronomiche, storiche e culturali. Descrive infatti il calendario, che è misura del tempo e storia dell'uomo, nel quale sono presenti l'astronomia, i punti cardinali (da cui deriva la linea meridiana), la gnomonica. Questa opera ha, inoltre, un richiamo di forte valenza ambientalista, quanto mai opportuno in una società che sempre più ci segrega dalla Natura.

Analogo al libro di Michele Fancipane : http://lfws.lafeltrinelli.it/libri/francipane-michele/l-avventura-calendario/9788845418280 forse ancora acquistabile qui in http://www.bookweb.it/libro/francipane-michele/l-avventura-del-calendario/9788845418280.html

DESCRIZIONE : Una storia antica come il mondo L'affascinante storia del tempo e dello strumento che dagli albori dell'umanità ha cercato di imbrigliarlo e misurarlo. Le curiosità e i record storici, i calendari più strani e sfiziosi, i più lunghi e i più corti, quelli perpetui... Dal primo calendario d'osso all'orologio ad alta precisione, tra apprendisti stregoni e scienziati, la storia di un'avventura che non avrà mai fine...

...Prima di tutto...il mio calendario razionale... che, essendo RAZIONALE sarà probabilmente odiato dalla maggioranza degli irrazionali esseri umani ( attualmente circa 7000 milioni ).

Basato sulle settimane bibliche, non sui giorni !
  1. Ogni stagione dura solitamente 13 settimane di tre mesi ossia 91 giorni ( o, raramente, dura 14 settimane l'Autunno negli anni LUSTRALI ) : il primo mese è di 5 settimane (35 giorni ) e i due seguenti di 4 settimane ( 28 giorni ).
  2. I mesi di 5 settimane sono Gennaio, Aprile, Luglio ed Ottobre ( mnemonica : re_G_A_L_O ) ma negli anni LUSTRALI anche Dicembre dura 5 settimane.
  3. I mesi di 4 settimane, ossia 28 giorni, sono ovviamente Febbraio e Marzo in Inverno, Maggio e Giugno in Primavera, Agosto e Settembre in Estate, Novembre e Dicembre in Autunno.
  4. Per ragioni astronomiche le stagioni finiscono il 21 dell'ultimo mese, Marzo, Giugno, Settembre e Dicembre, come da tradizione, e il cambio di stagione cade sempre di Domenica.
  5. Sono anni detti LUSTRALI gli anni esattamente divisibili per 5 ( dato che un lustro vuol dire 5 anni ) ma fanno eccezione, ossia sono anche loro anni normali, gli anni divisibili esattamente per 40 ma restano anni LUSTRALI gli anni divisibili esattamente per 400 ( ossia il 1600, il 2000, il 2400 etc.).
  6. Ogni mese inizia SEMPRE di Lunedì ( come il primo gennaio 2001 del calendario gregoriano che è stato un Lunedì ) e finisce sempre di Domenica per cui, quando si fastegga il primo Gennaio, ossia il Capodanno, o il primo Maggio, si fa sicuramente un ponte festivo con la Domenica del giorno precedente... e il 25 Dicembre, il Natale di Gesù di Nazaret, è sempre GIOVEdì ossia il giorno dedicato a Giove ossia al pianeta maggiore del sistema solare, dai greci chiamato Zeus, il Re degli Dei Mitologici dell' Olimpo.
  7. Visitare : http://www.elegio.it/mp3/musicale.html dove è reperibile l'algoritmo per il calcolo del Giorno Giuliano e della età della Luna... I dati del Giorno Giuliano ( ideato da Giuseppe Giusto Scaligero, nato il 5 agosto 1540 e morto il 21 gennaio del 1609 ) concordano esattamente con i dati della tabella riportata a pag. 121 del libro Paltrinieri. Il primo Gennaio 2001 a mezzogiorno è stato il J.D. ossia il Giorno Giuliano 2451911.

http://it.wikipedia.org/wiki/Orbita_della_Luna

Ci sono diversi modi per misurare quanto tempo impiega la Luna per completare un'orbita. Il mese siderale è il tempo che ci vuole per fare un'orbita completa rispetto alle stelle fisse, 27.3 giorni circa ( esattamente 27.32166155 giorni ). Invece il mese sinodico ( esattamente 29.53058886 giorni ) , la cui durata è di 29.5 giorni circa, è il tempo necessario alla Luna per raggiungere la stessa fase. Il periodo sinodico è più lungo del periodo siderale perché il sistema Terra-Luna si muove di una ben precisa distanza nella sua orbita attorno al Sole durante ogni mese siderale, ed è quindi necessaria una maggior durata per ottenere la stessa geometria relativa. Altre definizioni della durata di un mese lunare sono: il tempo necessario per passare due volte al perigeo (mese anomalistico : 27.554550 giorni ), al nodo ascendente (mese draconico: 27.212220815 giorni), e per una determinata longitudine eclittica (mese tropico: 27.321582 giorni). A causa della lenta precessione dell'orbita lunare, questi ultimi tre periodi sono leggermente diversi dal mese siderale.

In sostanza 235 mesi sinodici corrispondono a 235*29.53058886 giorni ossia 6939.6883821 giorni mentre 19 anni Giuliani ( che durano 365.25 giorni) durano 6939.75 giorni mentre 19 anni Gregoriani ( che durano mediamente non 365.25 ma 365.2425 giorni ) corrispondono a 6939.6075 dunque in questo caso si ha una leggera sottostima della durata delle 235 lunazioni ( 6939.6075/6939.6883821 ==> 0.999988345 ) mentre nel caso dell'anno Giuliano si ha una leggera sovrastima ( 6939.75/6939.6883821 ==> 1.000008879 ).

In 19 anni possono cadere 4 o 5 anni bisestili e dunque, per non avere il disturbo degli anni bisestili, si può considerare un periodo di 76 anni in cui cadono sempre, se non sono a cavallo del cambio del secolo, 19 anni bisestili e dunque si verificano esattamente 940 lune nuove e lune piene in 27759 giorni ( esattamente 940 sarebbero ogni 27758.75 giorni ).

http://www.elegio.it/images/elencoimmagini.html

 

 

Tracce del libro: http://www.hoepli.it/libro/calendario-lunario-la-misura-del-tempo-dalla-preistoria-a-oggi/9788882193751.html

http://it.wikipedia.org/wiki/Edagricole

http://www.elegio.it/images/test/

 

 

 

Anche se ho già scritto una coppia di funzioni analoghe a queste due ( http://www.elegio.it/mp3/musicale.html ) ne ho fatte due nuove che mi sembrano migliori dal lato estetico informatico ed inoltre propongo gli algoritmi per gestire il calendario LUSTRALE ossia il calendario che ha anni di 364 giorni ma periodicamente, ad ogni lustro ossia ad ogni anno esattamente divisibile per 5, un dicembre più lungo di una settimana e dunque un anno di 371 giorni. Non tutti i lustri sono anni lunghi; non lo sono gli anni esattamente divisibili per 40 ma sono lunghi gli anni esattamente divisibili per 400... Una regola analoga, anche se non esattamente la stessa, ispirata da quella del calendario Gregoriano...

Verifica delle funzioni per il calcolo del Giorno Giuliano in base alla data del calendario Gregoriano e viceversa...ed anche usando la data del calendario Lustrale e viceversa...

...Per vedere qualcosa bisogna abilitare Javascript ...

...

...

...

...

...

//
// Per il CALENDARIO GREGORIANO
//
var utilicose={versione:"9 giugno 2015",
mesi:[" Dicembre "," Gennaio "," Febbraio ",
   " Marzo "," Aprile ", " Maggio "," Giugno ",
   " Luglio "," Agosto ", " Settembre ",
   " Ottobre ", " Novembre "," Dicembre ",
   " gennaio ", " febbraio "," marzo "],
etaluna:["\u263b01",
    "\u263b01","\u263b02","\u263b03","\u263b04","\u263b05",
    "\u263d06","\u263d07","\u263d08","\u263d09","\u263d10",
    "\u263d11","\u263d12","\u263a13","\u263a14","\u263a15",
    "\u263a16","\u263e17","\u263e18","\u263e19","\u263e20",
    "\u263e21","\u263e22","\u263e23","\u263e24","\u263e25",
    "\u263b26","\u263b27","\u263b28","\u263b29","  "]
}
utilicose.grjd=function(amd){
   var vm,my,mm,xjd;
   vm=[0,1,1,2,2,3,4,4,5,5,6,7,5];
   my=71997+amd[1]+amd[0]*12;
   mm=my%12;
   xjd=amd[2]+vm[mm]+(365*my-5*mm)/12+
   (my-my%48)/48-(my-my%1200)/1200+
   (my-my%4800)/4800-470336;
   return xjd;
   }
//
utilicose.jdgr=function(jdies){ 
    var jjj,rq,rs,rb,rg,rgg,
        bises,anni,mst,mm,my,cir;
    vm=[0,1,1,2,2,3,4,4,5,5,6,7,5];
    jjj=jdies+470335;
    rq=jjj%146097;
    rs=rq%36524;
    rb=rs%1461;
    bises=(rs-rb)/1461;
    rg=rb%365;
    anni=400*(jjj-rq)/146097+
         100*(rq-rs)/36524+
         4*bises-6000+(rb-rg)/365;
    rgg=rg%30;
    mst=(rg-rgg)/30;
    my=72000+mst+anni*12;mm=my%12;
    cir=1+vm[mm]+(365*my-5*mm)/12+
         (my-my%48)/48-(my-my%1200)/1200+
         (my-my%4800)/4800-470336;
    if(xgt(cir,jdies)){
          mst=mst-1;my=my-1;mm=my%12;
          cir=1+vm[mm]+(365*my-5*mm)/12+
             (my-my%48)/48-(my-my%1200)/1200+
             (my-my%4800)/4800-470336;}
    mst+=3;
    if(xgt(mst,12)){mst+=-12;anni+=1};
    return [anni,mst,1+jdies-cir]
    };
//
utilicose.faseluna=function(amg){
    //
    // Vale dopo il 1600  approssimativamente e usando
    // il calendario gregoriano...
    //
    // Fornisce l'eta' della Luna tra 0 e 29. 
    // Il plenilunio e' l'eta' 14 o 15.
    // Attenzione: gennaio == 1 (non 0) e dicembre == 12.
    //
    var G,M,A,NumDoro,NumSeco,Epatta,eluna;
    //
    G = amg[2]; 
    M = amg[1];
    A = amg[0];
    if(xgt(1600, A) || xgt(M,12) || xgt(1, M) || 
       xgt(1, G) || xgt(G,31)) return 30;
    NumDoro= 1 + (A%19);
    NumSeco= Math.floor(A/100);
    Epatta=(296+ NumDoro*11 + Math.floor(NumSeco/3) - 
               Math.floor((3*NumSeco-1)/4) )%30;
    eluna=(Epatta + G + M - 2*Math.floor((M+9)/12)-1)%30;
    return eluna;
    }   
//
//
// Per il CALENDARIO LUSTRALE
//
utilicose.lusjd=function(amd){
    return (1721005+amd[2]+
      ((13*amd[1]+13-(amd[1]+1)%3)/3+
      (20871*amd[0]-80*(amd[0]%5)+
      10*(amd[0]%40)-amd[0]%400)/400)*7);
    }
//
utilicose.jdlus=function(jdies){
    var xlustro,lustro,a,sett,tolgo,fm,ss,sb,
        xss,mes,ddd,vset;
        ddd=(jdies+1200878)%7;
        vset=(jdies+1200878-ddd)/7;
        sett=vset+(vset-vset%2087)/2087-
          (vset-vset%20870)/20870;
        xlustro=sett%261;
        lustro=(sett-xlustro)/261;
        a=Math.min((xlustro-xlustro%52)/52,4)+
          5*lustro;
        tolgo=(20871*a-80*(a%5)+
               10*(a%40)-a%400)/400;
        fm=vset-tolgo;
        ss=Math.max(0,fm%13-1);
        xss=(ss-ss%4)/4;
        mes=xss+3*(fm-fm%13)/13;
        sb=tolgo+(13*mes+26-(mes+2)%3)/3;
        if (mes==12) {mes+=-1;ddd+=28};
    return [a-8000,1+mes,1+ddd+7*(vset+8-sb)];
    }
//

Sottolineo gli aspetti positivi del calendario LUSTRALE. Sono di 5 settimane i mesi di inizio stagione ossia del reGALO ossia dura 5 settimane Gennaio, Aprile, Luglio e Ottobre mentre gli altri durano 4 settimane come il Febbraio del calendario Gregoriano. Se il numero dell' anno è esattamente divisibile per 5 allora anche Dicembre dura 5 settimane...

In base a questa regola ogni mese inizia con Lunedì e finisce con Domenica. Di solito si fanno feste al primo del mese per cui, in questo modo, la festa del primo Maggio sarà sempre di Lunedì e questo consente di fare bei ponti di festa...

Ho calibrato il calendario LUSTRALE in modo che sia coincidente con quello Gregoriano il primo gennaio 2001 che, appunto, è stato un Lunedì e c'è perfetta concordanza dei giorni della settimana ossia ogni Domenica è sempre Domentica in tutti e due i calendari.

  1. http://www.elegio.it/doc/
  2. http://www.elegio.it/utili/
  3. http://www.elegio.it/mp3/musicale.html
  4. http://www.elegio.it/doc/tn/
  5. http://www.elegio.it/max/
  6. http://www.elegio.it/svg/svg2014/
  7. http://www.elegio.it/mc2/
  8. http://www.elegio.it/omnia/
  9. http://www.elegio.it/omnia/rg/

...In Maximese...
( wxMaxima )

/*
Voglio che il calendario gregoriano e il calendario 
lustrale diano lo stesso Giorno Giuliano il primo
gennaio 2001.
Il primo gennaio 2001 del calendario gregoriano
e' il Giorno Giuliano 2451911.
Anche se , nel calendario lustrale, sarebbe piu'
naturale indicare con 0 Gennaio e con 0 il
primo di ogni mese e con 0  ogni Lunedi'....
faccio in modo che il lustrale adotti le
stesse regole del gregoriano ossia
Gennaio sia 1, Lunedi' sia 1 e Domenica 7 ed
il primo di ogni mese sia il giorno 1.
*/

/*
Dalla data del Calendario Lustrale al Giorno Giuliano...
*/

/*
Versione semplificatissima...
*/

lusjd(a,mm,dd):=block((ss),
   ss:(13*mm+13-mod(mm+1,3))/3+
       (20871*a-80*mod(a,5)+
       10*mod(a,40)-mod(a,400))/400,
   return(ss*7+dd+1721005)
)$


/*
Dal Giorno Giuliano alla data del Calendario Lustrale.
*/

jdlus(jj):=block((jjj,xlustro,lustro,a,
   sett,tolgo,fm,ss,sb,xss,mes,ddd,vset),
   jjj:jj+1200878,
   ddd:mod(jjj,7),
   vset:(jjj-ddd)/7,
   sett:vset+(vset-mod(vset,2087))/2087-
          (vset-mod(vset,20870))/20870,
   xlustro:mod(sett,261),
   lustro:(sett-xlustro)/261,
   a:min((xlustro-mod(xlustro,52))/52,4)+5*lustro,
   tolgo:(20871*a-80*mod(a,5)+
      10*mod(a,40)-mod(a,400))/400,
   fm:vset-tolgo,
   ss:max(0,mod(fm,13)-1),
   xss:(ss-mod(ss,4))/4,
   mes:xss+3*(fm-mod(fm,13))/13,
   sb:(13*mes+26-mod(mes+2,3))/3+tolgo,
   if mes=12 then (mes:mes-1,ddd:ddd+28 ),
   return([a-8000,1+mes,1+ddd+7*(vset+8-sb)]))$


/*
Da Gregoriano a JuliiDies ( Giorno Giuliano )
*/

grjd(a,m,d):=block((vm,my,mm,xjd),
vm:[0,1,1,2,2,3,4,4,5,5,6,7,5],
my:71997+m+a*12,
mm:mod(my,12),
xjd:d+vm[mm+1]+(365*my-5*mm)/12+
   (my-mod(my,48))/48-
   (my-mod(my,1200))/1200+
   (my-mod(my,4800))/4800-470336,
return (xjd))$

/*
Da JuliiDies a Gregoriano usando la precedente funzione:
*/

jdgr(jdies):=block((jjj,rq,rs,rb,rg,rgg,tetrasec,
                     sec,bises,anni,mst,cir),
     jjj:jdies+470335,
     rq:mod(jjj,146097),
     tetrasec:(jjj-rq)/146097,
     anni:tetrasec*400,
     rs:mod(rq,36524),
     sec:(rq-rs)/36524,
     anni:anni+100*sec,
     rb:mod(rs,1461),
     bises:(rs-rb)/1461,
     rg:mod(rb,365),
     anni:anni+4*bises-6000+(rb-rg)/365,
     rgg:mod(rg,30),
     mst:(rg-rgg)/30+3,
     cir:1+jdies-grjd(anni,mst,1),
     if 1>cir then (mst:mst-1,
        cir:1+jdies-grjd(anni,mst,1)),
     if mst>12 then (mst:mst-12,anni:anni+1),
     return([anni,mst,cir]))$

/*
Dal Giorno Giuliano alla data Gregoriana MA 
senza uso di funzioni esterne...
*/

idgr(jdies):=block((jjj,rq,rs,rb,rg,rgg,tetrasec,
                     sec,bises,anni,mst,mm,my,cir),
     vm:[0,1,1,2,2,3,4,4,5,5,6,7,5],
     jjj:jdies+470335,
     rq:mod(jjj,146097),
     tetrasec:(jjj-rq)/146097,
     anni:tetrasec*400,
     rs:mod(rq,36524),
     sec:(rq-rs)/36524,
     anni:anni+100*sec,
     rb:mod(rs,1461),
     bises:(rs-rb)/1461,
     rg:mod(rb,365),
     anni:anni+4*bises-6000+(rb-rg)/365,
     rgg:mod(rg,30),
     mst:(rg-rgg)/30,
     my:72000+mst+anni*12,
     mm:mod(my,12),
     cir:1+vm[mm+1]+(365*my-5*mm)/12+
         (my-mod(my,48))/48-
         (my-mod(my,1200))/1200+
         (my-mod(my,4800))/4800-470336,
     if cir>jdies then (
          mst:mst-1,
          my:my-1,
          mm:mod(my,12),
          cir:1+vm[mm+1]+(365*my-5*mm)/12+
             (my-mod(my,48))/48-
             (my-mod(my,1200))/1200+
             (my-mod(my,4800))/4800-470336),
     if mst>9 then (mst:mst-12,anni:anni+1),
     return([anni,mst+3,1+jdies-cir]))$

/*
Qualche verifica preliminare:
*/

questoGG:grjd(1946,4,1);
data:jdlus(questoGG);
idgr(questoGG);
lusjd(data[1],data[2],data[3]);

Notare che qui ho usato una semplice ma utile function che serve per ampliare il documento con librerie Javascript esterne od ottenute, come ho fatto qui, dall'innerHTML di un elemento usato per visualizzare esplicitamente, a scopo didattico, alcune funzioni usate ( il calcolo della età della Luna e il calcolo del Giorno Giuliano in base alla data del calendario gregoriano o lustrale e viceversa )