Bonjour à tous,
pour un programme, j'ai besoin d'un DateGadget() qui accepterait les Quad, car je souhaiterais calculer des dates allant de 1601 à 9999, si c'est possible.
Le problème majeur, c'est que je ne sais pas comment fonctionne ce gadget et d'après ce que j'ai compris, il n'accepte que des valeurs allant du 01/01/1970 00:00:00 au 19/01/2038 03:14:07.
Je ne vous cache que j'aimerais trouver quelqu'un qui pourrait m'expliquer comment créer ce gadget et je l'en remercie beaucoup à l'avance, car ça me rendrait heureux d'être aussi chanceux.
[Resolu] Comment créer un DateGadget
[Resolu] Comment créer un DateGadget
Dernière modification par Micoute le dim. 12/nov./2017 14:17, modifié 1 fois.
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 5.73 PB 6.00 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Un homme doit être poli, mais il doit aussi être libre !
Re: Comment créer un DateGadget
Ce que tu veux faire, s'appel un calendrier Perpétuel !
cherches sur le Forum avec cette expression "calendrier Perpétuel" (voir aussi le forum Anglais )
tu devrai trouver ton bonheur ....
sinon au pire, il reste Google, qui va t'apporter surement quelques Algos ..
ça sent la vaseline ta phrase, en general moi ça me fait plutôt fuir ...
cherches sur le Forum avec cette expression "calendrier Perpétuel" (voir aussi le forum Anglais )
tu devrai trouver ton bonheur ....
sinon au pire, il reste Google, qui va t'apporter surement quelques Algos ..
c'est quelques peut exagéré non ?je l'en remercie beaucoup à l'avance, car ça me rendrait heureux d'être aussi chanceux
ça sent la vaseline ta phrase, en general moi ça me fait plutôt fuir ...
Site: http://michel.dobro.free.fr/
Devise :"dis moi ce dont tu as besoin, je t'expliquerai comment t'en passer"
Re: Comment créer un DateGadget
Bjr Micoute
Regarde le post de mesa qui a traduit en pb une dll asm d un calendrier perpetuel
http://www.purebasic.fr/french/viewtopi ... hilit=date
Je pense que cela devrait te convenir
Cordialement
Regarde le post de mesa qui a traduit en pb une dll asm d un calendrier perpetuel
http://www.purebasic.fr/french/viewtopi ... hilit=date
Je pense que cela devrait te convenir
Cordialement
Re: Comment créer un DateGadget
@ Dobro Non, je ne souhaite pas faire un calendrier perpétuel, mais simplement un calcul entre deux dates qui indiquerait le jour de la semaine, le jour du mois, le nom du mois et l'année des 2 termes de l'opération.
Mes remerciements par anticipation ne sont pas exagérés, mais sincères, c'est pour montrer à quel point je suis désespéré.
@ Kernadec, quand je suis embrouiller dans mes équations, j'ai du mal à réfléchir simplement, mais comme on "dit faire et défaire, c'est travailler", et refaire, moi je dis que c'est usant.
Je possède déjà ce programme et je vais voir ce que je peux faire avec
Merci à tous les deux.
Mes remerciements par anticipation ne sont pas exagérés, mais sincères, c'est pour montrer à quel point je suis désespéré.
@ Kernadec, quand je suis embrouiller dans mes équations, j'ai du mal à réfléchir simplement, mais comme on "dit faire et défaire, c'est travailler", et refaire, moi je dis que c'est usant.
Je possède déjà ce programme et je vais voir ce que je peux faire avec
Merci à tous les deux.
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 5.73 PB 6.00 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Un homme doit être poli, mais il doit aussi être libre !
Re: [Resolu] Comment créer un DateGadget
J'ai aussi fait ça:
M.
Code : Tout sélectionner
;....................................................................................
; .: CALCUL SUR LES DATES :.
;============================
; Jour Julien astronomique
;============================
; Auteur Mesa
; PureBasic v4.61 à v5.61
;
; D'après "Astronomie pratique et informatique"
; de C. DUMOULIN et JP PARISOT, Ed MASSON (niveau scientifique : Master)
;
; Le jour julien est universellement utilisé par les astronomes et les historiens.
; Sa précision est de l'ordre de la minute de temps entre les années -5000 et +8000 au moins
;
; Le calcul du jour julien (JJ ou JD en anglais pour Jour Julien)
; est indispensable pour effectuer des calculs astronomiques
; mais aussi pour faire des calculs sur des dates du calendrier.
;
; Opérations sur les dates : addition, soustraction, etc...
;
; Par ex : Le 6 juin 1944 à 6h 10' 24" + 3 mois 4 jour 1h 47' 12" = ?
;......................................................................................
;OS : Tous
;Institut de mecanique celeste et de calcul des ephemerides
;http://www.imcce.fr/fr/grandpublic/temps/jour_julien.php
;
Procedure.d jd(Annee, Mois, jour, Heure, Minute, Seconde); Jour Julien à 0h TU (Temps Universel )
Protected y.d=0
Protected m.d=0
Protected a.d=0
Protected jj.d=0
Protected z.d=0
If Mois<3
y=Annee-1
m=Mois+12
Else
y=Annee
m=Mois
EndIf
jj=Int(365.25*(y+4716))+Int(30.6001*(m+1))+jour-1524.5
; Réforme Grégorienne
; Au Jeudi 4 Octobre 1582 succède le Vendredi 15 Octobre 1582
;
a=Annee+(Mois/100)+(jour/10000)
If a>1582.1014;
a = Int(y/100)
jj = jj + 2 - a + Int(a/4)
EndIf
;Ajout h m s
jj + (Heure + Minute/60 + Seconde/3600)/24
ProcedureReturn jj
EndProcedure
Procedure.d jd2(Annee, Mois, jour, Heure, Minute, Seconde); Jour Julien à 0h TU (Temps Universel )
; --Ne fonctionne pas avant le 15 Octobre 15 1582 mais plus rapide que jd()--
Protected j.d
Protected m
Protected a
Protected jj.d
a=Annee
m=Mois
j=jour+(Heure + Minute/60 + Seconde/3600)/24
jj=367*a -Int(1.75*(Int((m+9)/12)+a))
jj-Int(0.75*(1+Int((Int((m-9)/7)+a)*0.01)))
jj+Int((275*m)/9)+j+1721028.5
ProcedureReturn jj
EndProcedure
Procedure.s jd2Date(jj.d) ; Jour Julien -> Date
Protected j1.d,f.d,dm.d,h.d
Protected z,aa,al,b,c,d,e,an
Protected Resultat.s
j1=jj+0.5
z=Int(j1)
f=j1-z
If z<2299161
aa=z
Else
al=Int((z-1867216.25)/36524.25)
aa=z+1+al-Int(al/4)
EndIf
b=aa+1524
c=Int((b-122.1)/365.25)
d=Int(365.25*c)
e=Int((b-d)/30.6001)
dm=b-d-Int(30.6001*e)+f
If e<14
m=e-1
Else
m=e-13
EndIf
If m>2
an=c-4716
Else
an=c-4715
EndIf
h=24*(dm-Int(dm))
Resultat=Str(an)+"/"+Str(m)+"/"+Str(Int(dm))+" "+StrD(h); Année Mois Jour Heure (fraction)
ProcedureReturn Resultat
EndProcedure
Procedure.b DayOfWeekJD(jj.d)
;Renvoie 0=Dimanche, 1 Lundi, 2=Mardi, 3=Mercredi, 4=Jeudi, 5=Vendredi, 6=Samedi
Protected j.d
Protected Resultat.b
j=jj+1.5
Resultat=Int(j-7*Int(j/7));j%7
ProcedureReturn Resultat
EndProcedure
Procedure DayOfYearJD(Annee, Mois, jour) ;Renvoie le rang du jour dans l'année
Protected Resultat
Resultat = 1+ jd(Annee, Mois, jour, 0, 0, 0) - jd(Annee, 1, 1, 0, 0, 0)
ProcedureReturn Resultat
EndProcedure
Procedure.b IsLeapYear(Annee) ; Renvoie : 0 = pas bissextile, 1 = est bissextile
;Bissextile
Protected Resultat.b
If Annee < 1582 ; Trop compliqué, croyez moi !
ProcedureReturn 0; -1
EndIf
If Annee%4=0
If y%100<>0
Resultat=1
ElseIf Annee%400=0
Resultat=1
EndIf
Resultat=1
EndIf
ProcedureReturn Resultat
EndProcedure
Debug ("_____________.: Jour Juliens :.______________")
Debug "date Grégorienne : 1,1,-4712 :-> Jour Julien = " + StrD(jd(-4712,1,1,0,0,0),2)
Debug " Réforme Grégorienne "
Debug " Au Jeudi 4 Octobre 1582 succède le Vendredi 15 Octobre 1582"
Debug "date Grégorienne : 4,10,1582 :-> Jour Julien = " + StrD(jd(1582,10,4,0,0,0),2)
Debug "date Grégorienne : 15,10,1582 :-> Jour Julien = " + StrD(jd(1582,10,15,0,0,0),2)
Debug " Réforme Grégorienne OK"
Debug "date Grégorienne : 14,7,1789 :-> Jour Julien = " + StrD(jd(1789,7,14,0,0,0),2)
Debug "date Grégorienne : 1,1,1900 :-> Jour Julien = " + StrD(jd(1900,1,1,0,0,0),2)
Debug "date Grégorienne : 1,1,2000 :-> Jour Julien = " + StrD(jd(2000,1,1,0,0,0),2)
Debug "Jugement dernier ;) : 21,12,2012,12,12,12 :-> Jour Julien = " + StrD(jd(2012,12,21,12,12,12),6)
Debug "date Grégorienne : 1,1,3000 :-> Jour Julien = Ouf ! ;)) " + StrD(jd(3000,1,1,0,0,0),2)
Debug ""
Debug("___________Quick JD_____________")
Debug "Calcul rapide mais pas de Réforme Grégorienne"
Debug "date Grégorienne : 15,10,1582 :-> Jour Julien = " + StrD(jd2(1582,10,15,0,0,0),2)
Debug "date Grégorienne : 14,7,1789 :-> Jour Julien = " + StrD(jd2(1789,7,14,0,0,0),2)
Debug "date Grégorienne : 1,1,1900 :-> Jour Julien = " + StrD(jd2(1900,1,1,0,0,0),2)
Debug "date Grégorienne : 1,1,2000 :-> Jour Julien = " + StrD(jd2(2000,1,1,0,0,0),2)
Debug "Jugement dernier ;) : 21,12,2012,12,12,12 :-> Jour Julien = " + StrD(jd2(2012,12,21,12,12,12),6)
Debug ""
Debug("___________JD -> Grego_(Y, M, D, h)____________")
Debug "Jour Julien = 0.00 :-> date Grégorienne : " + jd2Date(0.00)
; Réforme Grégorienne
Debug " Au Jeudi 4 Octobre 1582 succède le Vendredi 15 Octobre 1582"
Debug "Jour Julien = 2299159.50 :-> date Grégorienne : " + jd2Date(2299159.50)
Debug "Jour Julien = 2299160.50 :-> date Grégorienne : " + jd2Date(2299160.50)
Debug " Réforme Grégorienne OK"
Debug "Jour Julien = 2374673.50 :-> date Grégorienne : " + jd2Date(2374673.50)
Debug "Jour Julien = 2415020.50 :-> date Grégorienne : " + jd2Date(2415020.50)
Debug "Jour Julien = 2451544.50 :-> date Grégorienne : " +jd2Date(2451544.50)
Debug "Jour Julien =2456283.008472 :-> date Grégorienne : " + jd2Date(2456283.008472)
Debug "Jour Julien = 2816787.50 :-> date Grégorienne : " + jd2Date(2816787.50)
Debug ""
; Debug("___________jour de la semaine____________")
; Debug "0=Dimanche, 1 Lundi, 2=Mardi, 3=Mercredi, 4=Jeudi, 5=Vendredi, 6=Samedi"
; Debug " Au Jeudi 4 Octobre 1582 succède le Vendredi 15 Octobre 1582"
; Debug "jour de la semaine du 4,10,1582 is " + Str(DayOfWeekJD(jd(1582,10,4,0,0,0)))
; Debug "jour de la semaine du 15,10,1582 is " + Str(DayOfWeekJD(jd(1582,10,15,0,0,0)))
; Debug "jour de la semaine du 1,1,2000 is " + Str(DayOfWeekJD(jd(1582,10,15,0,0,0)))
; Debug ""
Debug("___________jour de la semaine____________")
Debug "0=Dimanche, 1 Lundi, 2=Mardi, 3=Mercredi, 4=Jeudi, 5=Vendredi, 6=Samedi"
Debug " Au Jeudi 4 Octobre 1582 succède le Vendredi 15 Octobre 1582"
jour.s ="Dimanche,Lundi,Mardi,Mercredi,Jeudi,Vendredi,Samedi"
Debug "jour de la semaine du 4,10,1582 est " + StringField(jour.s,DayOfWeekJD(jd(1582,10,4,0,0,0))+1 ,",")
Debug "jour de la semaine du 15,10,1582 est " + StringField(jour.s,DayOfWeekJD(jd(1582,10,15,0,0,0))+1 ,",")
Debug "jour de la semaine du 1,1,2000 est " + StringField(jour.s,DayOfWeekJD(jd(2000,1,1,0,0,0))+1 ,",")
Debug "jour de la semaine du 11,04,2012 est " + StringField(jour.s,DayOfWeekJD(jd(2012,04,11,0,0,0))+1 ,",")
Debug ""
Debug("___________Aujourd'hui____________")
Tojour$=FormatDate("%yyyy/%mm/%dd %hh:%ii:%ss", Date())
jdTojour.d=jd(Year(Date()),Month(Date()),Day(Date()),Hour(Date()),Minute(Date()),Second(Date()))
dow=DayOfWeekJD(jdTojour)
dow$=""
;0=Dimanche, 1 Lundi, 2=Mardi, 3=Mercredi, 4=Jeudi, 5=Vendredi, 6=Samedi
Select dow
Case 0 : dow$="Dimanche "
Case 1 : dow$="Lundi "
Case 2 : dow$="Mardi "
Case 3 : dow$="Mercredi "
Case 4 : dow$="Jeudi "
Case 5 : dow$="Vendredi "
Case 6 : dow$="Samedi "
EndSelect
Debug "Aujourd'hui :" + dow$ + Tojour$
Debug "Jour Julien " + StrD(jdTojour)
Debug "jour n° " + Str(DayOfYearJD(Year(Date()), Month(Date()), Day(Date()))) + " de l'année"
isleap$ =" est une année bissextile"
isnotleapAnnee$ = " n'est pas une année bissextile"
If IsLeapYear(Year(Date())) = 1
Debug Str(Year(Date())) + isleap$
Else
Debug Str(Year(Date())) + isnotleapAnnee$
EndIf
MessageRequester("Maintenant","Faisons quelques calculs sur les dates.",0)
; ClearDebugOutput()
Debug "Faisons quelques calculs sur les dates."
Debug "Quelle est la date au : 373 jours après le 1/1/2000 0h ?"
Newjd.d=jd(2000,1,1,0,0,0) + 373
Debug jd2Date(Newjd)
Debug ""
Debug "Quelle est la date au : 119 jours avant le 1/1/2000 0h ?"
Debug jd2Date(jd(2000,1,1,0,0,0) - 119)
Debug ""
Debug "Quelle est la date au : 3 semaines après le 1/1/2000 0h ?"
Debug jd2Date(jd(2000,1,1,0,0,0) + 7*3)
Debug ""
Debug "Quelle est le nombre de jours entre le 1/1/2000 12h 14m 37s et le 1/1/3000 6h 56m 12s ?"
jd1.d=jd(2000,1,1,12,14,37)
jd2.d=jd(3000,1,1,6,56,12)
Debug jd2-jd1
Debug ""
Debug "Bébé naîtra 9 mois après aujourd'hui :"
Debug jd2Date(jdTojour + 9*30.5)
Re: [Resolu] Comment créer un DateGadget
Mais c'est génial ce programme, merci pour le partage.
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 5.73 PB 6.00 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Un homme doit être poli, mais il doit aussi être libre !