COMMENT SAVOIR QUEL JOUR ÉTAIT-ON À UNE TELLE DATE?

Signaler
Messages postés
2
Date d'inscription
mercredi 28 juillet 2004
Statut
Membre
Dernière intervention
18 février 2006
-
Karkanas
Messages postés
2
Date d'inscription
mardi 4 décembre 2012
Statut
Membre
Dernière intervention
9 avril 2014
-
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/36120-comment-savoir-quel-jour-etait-on-a-une-telle-date

Karkanas
Messages postés
2
Date d'inscription
mardi 4 décembre 2012
Statut
Membre
Dernière intervention
9 avril 2014

Bonjour,

Je viens tout juste de consulter cet article, et aussi de m'inscrire.

Tout d'abord merci pour le post, je programme en Java mais les formules mathématiques restant bonnes quelque soit le langage, cela m'a bien aidé !!

KHIMI : Une année bissextiles c'est, (une année divisible par 4 ET NON par 100 OU une année divisible par 400).
khimi
Messages postés
4
Date d'inscription
samedi 3 novembre 2007
Statut
Membre
Dernière intervention
14 mai 2012

Je sais que cela fait un moment que ce code a été déposé, cependant je tiens à signaler que l'algorithme de calcul ne fonctionne pas correctement.
Il y un une erreur sur les années bissextiles, précisément sur les dates du 31 Janvier et du 1er Février qui retournent exactement le même numéro de jour.

J'ai testé avec les dates du 31/01/2012 et du 01/02/2012, et le calcul retourne le chiffre 3.
Voici comment j'ai résolu ce problème ( j'ai fait quelques tests afin de vérifier son exactitude, cependant il se peut qu'il soit lui aussi incorrect ) :

// Petite macro permettant de savoir si l'année est bissextile ou non, les années bissextiles doivent être divisibles par 4 et non divisible par 100
#define isLeapYear( year ) ( ( year % 4 == 0 ) && ( year % 100 != 0 ) )

Ensuite il suffit de modifier légèrement la macro g afin quelle prenne en compte les années bissextiles,
pour le mois de février des années bissextiles, il ne faut pas ajouter 13 mais 8 :
#define g( year, month ) ( month < 3 ? ( isLeapYear( year ) && month > 1 ? month + 8 : month + 13 ) : month + 1 )

En espérant vous avoir aidé.
bennoua34
Messages postés
1
Date d'inscription
jeudi 29 avril 2010
Statut
Membre
Dernière intervention
21 mai 2010

Super beau travail!
tekila_bandita
Messages postés
248
Date d'inscription
mercredi 15 juin 2005
Statut
Membre
Dernière intervention
15 mars 2007
11
Eh bien en faite, si on s'y attarde un peu je pense que l'on pourrait reussir a simplifier la formule, mais moi je l'ai trouver en tant qu'exercice d'application dans mon livre sur le C, alors je l'ai appliqué...
Dans l'exercice, il montre une formule que si on l'applique à deux dates et que l'on effectue la différence des resultats obtenus, alors on obtient, d'une maniere simple, le nombre de jours d'ecart entre ces deux dates...
Dans un exercice juste en dessous, il nous dise que si l'on reprend le resultat de ce calcul appliqué à une date, qu'on lui soustrait 621049 et qu'on garde le reste de ce resultat divisé par 7, on obtient un chiffre compris entre 0 et 6 indiquant le jour de la semaine (Le lundi étant le premier jour de la semaine, il se voit donc affecter la valeur 1, donc dimanche et 0 vu qu'il n'y a pas de valeur 7...)...

Je ne peus pas plus vous expliqué, mais si un jour je m'attarde sur cette formule, alors je vous ferait part des details du calcul...
En tout cas, merci pour vos notes ! :D ;)
cs_Joky
Messages postés
1787
Date d'inscription
lundi 22 novembre 2004
Statut
Membre
Dernière intervention
31 janvier 2009
2
Moi je fais comme ça :

int Julien(int Day, int Month, int Year)
{
int J;
J = 367*Year-7*(Year+(Month+9)/12)/4-3*((Year+(Month-9)/7)/100+1)/4+275*Month/9+Day+1721029;
J++;
return J;
}

int FindDay(char* MyDate)
{
char *Day[] = {"Dimanche", "Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "Samedi"};
int J = Julien(MyDate->Day, MyDate->Month, MyDate->Year);

strcpy(MyDate, Day[J%7]);
return J%7;
}
cs_Kmleon
Messages postés
2
Date d'inscription
mercredi 28 juillet 2004
Statut
Membre
Dernière intervention
18 février 2006

Dans un script, j'avais justement besoin de ce genre de formule. Donc merci beaucoup.
Par contre, je ne comprend rien à la formule :-/ Si quelqu'un a petite explication ....