SAlut TLM
Comment calculer la date du passage d'heure d'été et d'heure d'hiver en fonction de l'année...(formule mathematique )
Merci
-----
SAlut TLM
Comment calculer la date du passage d'heure d'été et d'heure d'hiver en fonction de l'année...(formule mathematique )
Merci
Tu peux partir d'ici pour avoir les bases sur lesquelles faire le calcul:
http://www.legifrance.gouv.fr/WAspad...o=ECOI0100131A
Oui merci je sais mais moi c le chiffre compri entre 1 et 31 en fonction date qui m'interesse...
Ce n'est pas très dur.
Imaginons que le calendrier n'ait jamais changé depuis l'année 0. C'est faux, mais ce n'est pas grave, les formules seront justes fausses pour les dates antérieures au changement.
On prends l'équivalence suivante :
Di=0, Lu=1, Ma=2, Me=3, Je=4, Ve=5, Sa=6
Soit x la valeur du jour du 31 Mars 0
On sait que:
Les années divisibles par 4 sont bisextiles,
sauf les années divisibles par 100 qui ne sont pas bisextiles,
sauf les années divisibles par 400 qui sont bisextiles
On sait aussi que 365 = 1 [7]
Donc le jour du 31 Mars de l'année n est donné par:
Je vois que le 31 Mars 2000 était un Vendredi (5) donc:
x + 2000 + 500 - 20 + 5 = x + 2485 = x [7]
donc x=5
c'est à dire que l'on considère que le 31 Mars 0 était un Vendredi même si c'est faux.
Conclusion, pour connaître le jour du dernier Dimanche de Mars de l'année n, tu calcules:
Le jour du mois est donné par : 31 - y
Exemple: année 5487
5 + 5487 + 1371 -54 +13 = 6822 = 4 [7]
31 - 4 = 27
Le dernier Dimanche du mois de Mars de l'année 5487 tombe le 27.
J'espère que je n'ai pas fait d'erreur. Je te laisse faire pour le passage à l'heure d'hiver.
Bonjour,
j'ai une méthode plus axée programme, dérivée de celle de Gauss, valable pour toutes dates allant de +1752 à +8000
La variable j doit être renseignée: 31 pour ce qui nous interresse
la variable m est le mois
a est l'année.
Pour le 31 mars 2005 on trouve jour= 4 donc jeudi car dimanche = 0m = m - 2: If m < 1 Then m = m + 12: a = a - 1
siecle = Int(a / 100)
a = a - (siecle * 100)
b = Int(2.6 * m - 0.19) + j + a + Int(a / 4) + Int(siecle / 4) - siecle * 2
jour = Int((b / 7 - Int(b / 7)) * 7 + 0.1)
le calcul est simple 31-4 = 27 mars 2005 est le dernier dimanche de mars 2005
Le 31 octobre 2005 est le jour N°1 de la semaine.
le passage à l'heure d'hiver sera le dimanche 31-1 octobre 2005
On n'a pas de complications de conversion de dates car les définitions sont simples.
pourquoi faire simple...
pour le basic standard, jour = b mod(7)
POUR L'HEURE D'ETE
b=2+31+année-2000+int(année-2000/4)+5-40
on obtient b=année-2002+int (année-2000/4)
pour les année >a 2002 ça marche mais si b est negatif c'est bizzard !!!
Bonjour,
Je ne suis pas un pro en maths, et j'aimerais savoir s'il est possible de calculer les dates été et hiver avec des formules simples comme avec excel ?
Que signifie E et (7) ?
merci d'avance
Restez simples! Seul paramètre à rentrer: l'année.
Infos:
Date changement heure d'été: dernier dimanche de mars (mois 3)
Date changement heure d'hiver: dernier dimanche d'octobre (mois 10)
Calcul:
Pour l'été: date= 31- (33+k)modulo 7
Pour l'hiver: date= 31- (51+k)modulo 7
. avec: k=valeur entière de ((497/400)xannée)
Exemple pour 2015:
k=entier ((497/400)x2015)= 2503 ................. Remarque: 497/400=1.2425
date été= 31-(33+2503)modulo 7= 31-(2536)modulo7= 31-2= 29 ........... Soit le dimanche 29 mars.
date hiver= 31-(51+2503)modulo 7= 31-(2554)modulo7= 31-6=25 .......... Soit le dimanche 25 octobre.
(N)modulo7 se calcule en faisant: ((N/7)-entier(N/7))x7 -> En gros, on garde le reste de N/7. On peut aussi utiliser une fonction Excel ou autre prévue pour ça...
En prime, tout ceci est facilement programmable, même en assembleur. Ceux que souhaitent réaliser une horloge avec un module GPS à la place d'un DCF77 qui est difficile à capter comprendront!
Déterrage de 2005 ! Un record .....
Bonjour
Sympa le déterrage !!!
fort pratique ce code tout simple.
Seul soucis, il se plante d'un jour sur les années bissextiles comme 2012 ou 2016 ; l'algo du #9 donne le lundi juste après le dimanche recherché.
Ça complique un poil mais ça reste super simple comme code ! Ça sort d'où ? c'est quoi la logique derrière ces constantes sorties de l'espace ?
Merci
Le calendrier grégorien avance de 497 jours à tous les 400 ans: 5 jours par 4 ans consécutifs, donc 500 jours en 400 ans, moins les 3 jours en trop des 3 années multiples de 100 qui ne sont pas bissextiles. Et comme 497 est multiple de 7, le calendrier se répète à tous les 400 ans.
Donc k = int(497/400 * année) est le nombre de jours que le calendrier a avancé par rapport à l'an 0 qu'on considère dans le calendrier grégorien. Cet an zéro peut-être aussi 1600, 2000, etc à cause de la période de 400 ans.
En 2000, le dernier dimanche de mars est le 26. Le 31 est un vendredi, jour 5 de la semaine en comptant à partir de dimanche=0. Donc 31 - ( (k + (31-26)) mod 7) va donner la date du dernier dimanche (31-26=5, dans le code dodu1314 fait plutôt k+33 au lieu de k+5, ca marche aussi car 33=5 mod 7, mais ce n'est pas nécessaire de prendre 33. Je suppose qu'il ne comprend pas vraiment ce code, il a dû faire un copier-collé de quelque part).
Même chose pour octobre 2000: le dernier dimanche est le 29, et le 31 est un mardi, jour = 2. Donc 31 - ((k+(31-29)) mod 7) donne le dernier dimanche d'octobre. Ici aussi il fait k+51 au lieu de k+2, ca change rien car 51=2 mod 7.
Les erreurs sont dues à l'arrondi dans le calcul de k, pour les années bissextiles il faut arrondir à l'entier supérieur et non inférieur. Il y aussi, pour les années 2000, des erreurs à partir de 2037. Mais c'est du code compact, qui est bon pour 20 ans encore, je suppose que ca lui suffit.
En fait le decalage de jour de la semaine est de moins un jour par année et de 0 pour les années bissextiles
on peut se caler à partir de 2000 mais aussi à partir de l'année théorique 0
pour le passage en heure d'ete jour de mars phete = 25+(7002-(annee)-int((annee)/4))%7; ( % pour modulo, on pourrait se contenter de 2 au lieu de 7002 mais c'est pour éviter d'avoir des modulos de nombre négatifs )
pour le passage en heure d'hiver jour d'octobre phhiver= 25+(7005-(annee)-int((annee)/4))%7;
valable jusqu'en 2099 après on retombe sur la formule de Matthias.