Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Calcolare giórno della settimana di qualsiasi anno

517 views
Skip to first unread message

Lan Area Network

unread,
Jun 22, 2012, 5:57:21 AM6/22/12
to


Ciao

Ho cercato in rete un procediménto per trovare a quale giórno della
settimana, Lunedì, Martedì, una qualsiasi data di un qualsiasi anno
da quando e in vigóre il calendàrio Gregoriano!

Ho trovato questo sito:

http://xoomer.virgilio.it/esongi/formula.htm

Ho rifatto il càlcolo con la data di oggi, ma secondo mè e sbagliata!

Il risultato e 4
374,42857142857142857142857142857


Conoscete un mètodo per fare questi tipo di calcoli!

Ciao e gràzie




























martello

unread,
Jun 22, 2012, 7:02:18 AM6/22/12
to
Se ti interessa solo risolvere il problema ti consiglio un qualsiasi
foglio di calcolo ( che però forse non va oltre nel passato dal 1900).

Se vuoi una formula per il calcolo manuale ... non so ... ma secondo me
se quella non funziona ... occorre studiarsi il calendario Gregoriano
nei dettagli.


Lan Area Network

unread,
Jun 22, 2012, 7:44:50 AM6/22/12
to

>>
>> http://xoomer.virgilio.it/esongi/formula.htm
>>
>> Ho rifatto il càlcolo con la data di oggi, ma secondo mè e sbagliata!
>>
>> Il risultato e 4
>> 374,42857142857142857142857142857
>>
>>
>> Conoscete un mètodo per fare questi tipo di calcoli!
>
> Se ti interessa solo risolvere il problema ti consiglio un qualsiasi
> foglio di calcolo ( che però forse non va oltre nel passato dal 1900).
>
> Se vuoi una formula per il calcolo manuale ... non so ... ma secondo me se
> quella non funziona ... occorre studiarsi il calendario Gregoriano nei
> dettagli.

si, mi interesserebbe una fòrmula!

Ciao



Lan Area Network

unread,
Jun 22, 2012, 7:55:44 AM6/22/12
to

l'esempio riportato dal sito:

x = N + (q)(N - 1) : 4 - (q)(N - 1) : 100 + (q)(N - 1) : 400 + t

1-5-1988.

x = 1988 + (q)(1988-1) : 4 - (q)(1988-1) : 100 + (q)(1988-1) : 400 + 122 =
1988 + 496 - 19 + 4 + 122 = 2591;

x : 7 = 2591 : 7 = 370 col resto di 1;

ciò significa che il 1-5-1988 era domenica.



TABELLA APPLICATIVA DELLE FORMULEresto di x : 7 giorno della settimana

0 sabato

1 domenica

2 lunedì

3 martedì

4 mercoledì

5 giovedì

6 venerdì


Se lo fate con la data di oggi o domani, il risultato e 4.


Ciao



martello

unread,
Jun 22, 2012, 9:45:31 AM6/22/12
to

>> Se vuoi una formula per il calcolo manuale ... non so ... ma secondo me se
>> quella non funziona ... occorre studiarsi il calendario Gregoriano nei
>> dettagli.
>
> si, mi interesserebbe una fòrmula!

Scusa ... la malsana curiosità :-)

Perché?

Se la vuoi ricavare tu per puro esercizio ... non ti serve una formula
già preconfezionata ... ma ti serve studiare il calendario Gregoriano.

Se ti interessa conoscere i giorni della settimana di tutte le date il
problema è già stato risolto via software ed anche in forma gratuita (se
il problema fosse il soldo :-) ).


Lan Area Network

unread,
Jun 22, 2012, 11:59:06 AM6/22/12
to

>> si, mi interesserebbe una fòrmula!
>
> Scusa ... la malsana curiosità :-)
>
> Perché?
>
> Se la vuoi ricavare tu per puro esercizio ... non ti serve una formula già
> preconfezionata ... ma ti serve studiare il calendario Gregoriano.
>
> Se ti interessa conoscere i giorni della settimana di tutte le date il
> problema è già stato risolto via software ed anche in forma gratuita (se
> il problema fosse il soldo :-) ).
>
>

mi servirebbe una formula, da utilizzare in un piccolo programma C.
Questa non mi pare affidàbile.

Ciao



Coso

unread,
Jun 22, 2012, 12:33:15 PM6/22/12
to
Guardando il dito o seguendo la luna, Lan Area Network scrisse in
<4fe45d46$0$1385$4faf...@reader2.news.tin.it>:

>
>l'esempio riportato dal sito:
>
>x = N + (q)(N - 1) : 4 - (q)(N - 1) : 100 + (q)(N - 1) : 400 + t
>
>1-5-1988.
>
>x = 1988 + (q)(1988-1) : 4 - (q)(1988-1) : 100 + (q)(1988-1) : 400 + 122 =
>1988 + 496 - 19 + 4 + 122 = 2591;

Prima traduciamo queste strane scritte "(q)(n):d" in una piu` usuale
"[n/d]"... e cioe` usando le parentesi quadre per dire che si prende la
parte intera del numero contenuto...
In sostanza diventa:
x = N + [(N-1)/4] - [(N-1)/100] + [(N-1)/400] + t
dove N sarebbe il numero dell'anno del giorno voluto e t il numero di
giorni trascorsi dall'inizio dell'anno fino alla data voluta...

Non so se la formula sia giusta [il fatto che ci siano di mezzo 400 100
e 4 promette bene, ma andrebbe controllata], ma verificandola per...

>x : 7 = 2591 : 7 = 370 col resto di 1;
>
>ciò significa che il 1-5-1988 era domenica.
>
>
>
>TABELLA APPLICATIVA DELLE FORMULEresto di x : 7 giorno della settimana
>
>0 sabato
>
>1 domenica
>
>2 lunedì
>
>3 martedì
>
>4 mercoledì
>
>5 giovedì
>
>6 venerdì
>
>
>Se lo fate con la data di oggi o domani, il risultato e 4.

... il 22/06/2012 [venerdi`, e quindi dovrebbe dare 6] per il
23/06/2012 [sabato, e quindi dovrebbe dare 0]...
Abbiamo:
N = 2012
t = 31 + 29 + 31 + 30 + 31 + 22
quindi
x = 2012 + [2011/4] - [2011/100] + [2011/400] + 174
= 2012 + 502 - 20 + 5 +174 = 2673
e 2673 modulo 7 da` proprio 6 [venerdi`]...
Con il giorno successivo:
x = 2673 + 1 = 2674
e 2674 modulo 7 da` proprio 0 [sabato].

Non ho capito come fa a risultarti 4, ammenoche` tu non prenda la parte
intera di tutte le somme [sarebbe sbagliato, ma non ho controllato se
e` proprio quel che hai fatto].

Ciao ciao
Claudio

maitre Aliboron

unread,
Jun 22, 2012, 2:36:10 PM6/22/12
to
> Conoscete un mètodo per fare questi tipo di calcoli!

Cerca "Formula di Zeller".
Oppure un metodo molto furbo (e abbastanza mnemonico)
e' l'algoritmo di Doomsday di J.H.Conway.

maitre Aliboron

Ubachef

unread,
Jun 22, 2012, 3:01:17 PM6/22/12
to
Lan Area Network in <4fe44188$0$1386$4faf...@reader2.news.tin.it> ha
scritto :

> procediménto

Ma c'è un motivo che ti spinge ad indicare gli accenti di quasi tutte
le parole che scrivi?


--
mic
E d'un tratto capii che il pensare e' per gli stupidi,
mentre i cervelluti si affidano all'ispirazione.
Ah... https://sourceforge.net/projects/cirulla/


Lan Area Network

unread,
Jun 22, 2012, 3:02:12 PM6/22/12
to
allora ho sbagliato io! :-)

ma quel 174 da dove salta fuòri?

122 era aggiunto perche il 2012 e bisestile

Ciao



Tommaso Russo, Trieste

unread,
Jun 22, 2012, 3:18:05 PM6/22/12
to
Il 22/06/2012 17:59, Lan Area Network ha scritto:

> mi servirebbe una formula, da utilizzare in un piccolo programma C.

Per carita', non metterti tu a codificare in C formule che magari non
capisci bene! Il sapere collettivo ha depositato nella Rete non solo
formule, ma anche algoritmi belli che dimostrati, verificati e testati,
pronti per l'uso. Per esempio questo:

/* Calculate day of week in proleptic Gregorian calendar. */
/* Sunday == 0, Saturday == 6. */
int wday(int year, int month, int day)
{
int adjustment, mm, yy;

adjustment = (14 - month) / 12;
mm = month + 12 * adjustment - 2;
yy = year - adjustment;
return (day + (13 * mm - 1) / 5 +
yy + yy / 4 - yy / 100 + yy / 400) % 7;
}

(tratto da http://rosettacode.org/wiki/Day_of_the_week#C )

"prolettico" significa "applicato (impropriamente) anche a un tempo
precedente quello della definizione": l'algoritmo trova il giorno della
settimana anche per anni inferiori al 1582, anche per anni negativi e
per l'inesistente anno zero, "come se" il Calendario Gregoriano fosse
stato sempre in vigore. Usalo per date posteriori al 15 ottobre 1582 e
vai tranquillo.


--
TRu-TS
Buon vento e cieli sereni

Lan Area Network

unread,
Jun 22, 2012, 4:15:34 PM6/22/12
to

"maitre Aliboron" <maitre....@iaciners.org> ha scritto nel messaggio
news:4fe4bbf3$0$6140$426a...@news.free.fr...
no, no, l'algoritmo di Doomsday, non lo capisco pròprio!

Ho capito che se trovi il giórno e la data di un giorno, togli 7 aggiungi 7
e via cosi. E trovi quello che cerchi, ma e troppo macchinoso!


Ciao



Lan Area Network

unread,
Jun 22, 2012, 4:19:47 PM6/22/12
to


Ti ringrāzio!

Mi pare un algoritmo compatto, e semplice!

Ciao


Coso

unread,
Jun 23, 2012, 1:57:37 AM6/23/12
to
Guardando il dito o seguendo la luna, Lan Area Network scrisse in
<4fe4c130$0$1390$4faf...@reader2.news.tin.it>:

>ma quel 174 da dove salta fuòri?

E` il t della formula... ovvero i giorni trascorsi dall'inizio
dell'anno...

>122 era aggiunto perche il 2012 e bisestile

Era poi riferito al primo maggio 1988... quindi il t per quel caso era
dato dalla somma dei 31 giorni di gennaio piu` i 29 giorni di febbraio
[essendo bisestile] piu` i 31 giorni di marzo piu` i 30 giorni di
aprile piu` 1 che e` il primo giorno di maggio... in tutto 122.

La formula funziona... perche` aggiunge 1 per ogni anno; infatti se un
anno [non bisestile] comincia di martedi`, l'anno successivo comincera`
di mercoledi` [volendo basta fare 365 modulo 7]... ne aggiunge uno
ulteriore per tutti gli anni divisibili per 4 [se un bisestile inizia di
martedi`, il successivo iniziera` di giovedi`]; e *quasi* tutti gli
anni divisibili per 4 sono bisestili... ammenoche` non siano anche
divisibili per 100... e per questo sottrae quelli divisibili per 100...
ma c'e` un'ulteriore eccezione per quelli divisibili per 400... e per
questo la formula li somma...

Ciao ciao
Claudio

Josh

unread,
Jun 23, 2012, 3:28:23 AM6/23/12
to
Il 22/06/2012 21:01, Ubachef ha scritto:
> Lan Area Network in <4fe44188$0$1386$4faf...@reader2.news.tin.it> ha
> scritto :
>
>> procediménto
>
> Ma c'è un motivo che ti spinge ad indicare gli accenti di quasi tutte
> le parole che scrivi?
>
>
E' l'italiano gregoriano. Nota che non usa l'accento sull'ausiliare essere:
<<...secondo mè e sbagliata! Il risultato e 4 374--->>

Ubachef

unread,
Jun 23, 2012, 5:27:17 AM6/23/12
to
Josh in <4fe5701a$0$1385$4faf...@reader1.news.tin.it> ha scritto :

>>> procediménto
>>
>> Ma c'è un motivo che ti spinge ad indicare gli accenti di quasi tutte le
>> parole che scrivi?
>>
>>
> E' l'italiano gregoriano. Nota che non usa l'accento sull'ausiliare essere:

Ho visto. Inquietante l'abisso della psiche umana.

Lan Area Network

unread,
Jun 23, 2012, 9:57:01 AM6/23/12
to


di quale malattìa soffrirei?




Ubachef

unread,
Jun 23, 2012, 10:35:54 AM6/23/12
to
Lan Area Network in <4fe5cb31$0$1388$4faf...@reader1.news.tin.it> ha
scritto :
>
> malattìa

Tranquillo, sei sano come un pesce <grin>

Sandro kensan

unread,
Jul 2, 2012, 11:44:30 AM7/2/12
to
On 06/22/2012 11:57 AM, Lan Area Network wrote:
> Ciao
>
> Ho cercato in rete un procediménto per trovare a quale giórno della
> settimana, Lunedì, Martedì, una qualsiasi data di un qualsiasi anno
> da quando e in vigóre il calendàrio Gregoriano!

Forse lo sai già ma il PHP ha istruzioni molto semplici e potenti per
gestire le date: per esempio

// Prints: July 1, 2000 is on a Saturday
echo "July 1, 2000 is on a " . date("l", mktime(0, 0, 0, 7, 1, 2000));

mktime fa il timestamp ovvero il numero di secondi dalla Unix Epoch
(1970-01-01 00:00:00) e poi date, che accetta molti parametri, da il
giorno della settimana.

L'intervallo di valori va' tipicamente dal 13 dicembre 1901 20:45:54 al
19 gennaio 2038 03:14:07 che corrispondono al minimo e massimo valore
rappresentabili mediante un numero intero a 32 bit con segno.

http://php.html.it/articoli/leggi/929/date-in-php-come-gestirle/

scusate la digressione un po' OT ma sono un appassionato di PHP :)
--
Sandro kensan www.kensan.it & www.qiqi.it geek site
0 new messages