FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  MembresMembres  Connexion  
Derniers sujets
» trop de fichiers en cours
Date <-> Date julienne Emptypar lepetitmarocain Aujourd'hui à 17:29

» Une calculatrice en une ligne de programme
Date <-> Date julienne Emptypar jean_debord Aujourd'hui à 8:47

» Form(résolu)
Date <-> Date julienne Emptypar leclode Hier à 17:59

» Bataille navale SM
Date <-> Date julienne Emptypar jjn4 Ven 26 Avr 2024 - 17:39

» Gestion d'un système client-serveur.
Date <-> Date julienne Emptypar Pedro Jeu 25 Avr 2024 - 19:31

» Les maths du crocodile
Date <-> Date julienne Emptypar jean_debord Jeu 25 Avr 2024 - 10:37

» Naissance de Crocodile Basic
Date <-> Date julienne Emptypar jean_debord Jeu 25 Avr 2024 - 8:45

» Editeur EliP 6 : Le Tiny éditeur avec 25 onglets de travail
Date <-> Date julienne Emptypar Froggy One Mer 24 Avr 2024 - 18:38

» Dessine-moi une galaxie
Date <-> Date julienne Emptypar jjn4 Lun 22 Avr 2024 - 13:47

» Erreur END_SUB
Date <-> Date julienne Emptypar jjn4 Lun 22 Avr 2024 - 13:43

» Bug sur DIM_LOCAL ?
Date <-> Date julienne Emptypar papydall Dim 21 Avr 2024 - 23:30

» 2D_fill_color(résolu)
Date <-> Date julienne Emptypar leclode Sam 20 Avr 2024 - 8:32

» Consommation gaz électricité
Date <-> Date julienne Emptypar leclode Mer 17 Avr 2024 - 11:07

» on_key_down (résolu)
Date <-> Date julienne Emptypar leclode Mar 16 Avr 2024 - 11:01

» Sous-programme(résolu)
Date <-> Date julienne Emptypar jjn4 Jeu 4 Avr 2024 - 14:42

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Avril 2024
LunMarMerJeuVenSamDim
1234567
891011121314
15161718192021
22232425262728
2930     
CalendrierCalendrier
-45%
Le deal à ne pas rater :
WHIRLPOOL OWFC3C26X – Lave-vaisselle pose libre 14 couverts – ...
339 € 622 €
Voir le deal

 

 Date <-> Date julienne

Aller en bas 
5 participants
AuteurMessage
JL35




Nombre de messages : 7095
Localisation : 77
Date d'inscription : 29/11/2007

Date <-> Date julienne Empty
MessageSujet: Date <-> Date julienne   Date <-> Date julienne EmptySam 18 Sep 2010 - 22:42

Trouvé sur le net, les formules de conversion de date (Année, Mois, Jour) en date julienne (JD = un nombre).
Conversion date (Annee, Mois, Jour) en date julienne (JD)
Code:
IF Mois < 3 THEN Mois = Mois + 12: Annee = Annee - 1
A = INT(Annee/100)
B = INT(A/4)
C = 2-A+B
E = INT(365.25*(Annee+4716))
F = INT(30.6001*(Mois+1))
JD = C+Jour+E+F-1524.5
Conversion date julienne (JD) en date (Jour, Mois, Année)
Code:
  Z = JD+0.5
  W = INT((Z - 1867216.25)/36524.25)
  X = INT(W/4)
  A = Z+1+W-X
  B = A+1524
  C = INT((B-122.1)/365.25)
  D = INT(365.25 * C)
  E = INT((B-D)/30.6001)
  F = INT(30.6001*E)
  Jour = B-D-F
  Mois = E-1: IF Mois > 12 THEN Mois = Mois - 12
  Annee = C-4716: IF Mois < 3 THEN Annee = Annee + 1
Pratique pour effectuer des calculs sur les dates: calculer par exemple le nombre de jours entre deux dates,
le nombre de jours écoulés depuis la naissance, etc.

Màj le 19/9 à 17h40


Dernière édition par JL35 le Dim 19 Sep 2010 - 18:09, édité 2 fois
Revenir en haut Aller en bas
Invité
Invité




Date <-> Date julienne Empty
MessageSujet: Re: Date <-> Date julienne   Date <-> Date julienne EmptySam 18 Sep 2010 - 22:53

Super !

Tu peux aussi utiliser le logiciel Calendes.

Juste ici.
Revenir en haut Aller en bas
JL35




Nombre de messages : 7095
Localisation : 77
Date d'inscription : 29/11/2007

Date <-> Date julienne Empty
MessageSujet: Re: Date <-> Date julienne   Date <-> Date julienne EmptySam 18 Sep 2010 - 23:13

Certes ! mais c'est plus amusant de programmer soi-même ses outils.
Et puis apparemment ce logiciel calcule certaines dates particulières, mais ne permet pas de calculs entre deux dates, ce qui est justement le but de la notice ci-dessus.
Revenir en haut Aller en bas
659_minifly




Nombre de messages : 590
Age : 75
Localisation : Valenciennes Nord
Date d'inscription : 29/04/2010

Date <-> Date julienne Empty
MessageSujet: Re: Date <-> Date julienne   Date <-> Date julienne EmptySam 18 Sep 2010 - 23:26

super ton programme y va me servir, merci
Revenir en haut Aller en bas
jjn4

jjn4


Nombre de messages : 2690
Date d'inscription : 13/09/2009

Date <-> Date julienne Empty
MessageSujet: +++   Date <-> Date julienne EmptyDim 19 Sep 2010 - 0:35

Désolé, mais je ne comprends vraiment pas !
Qu'est-ce qu'une date julienne ?
Si c'est une date du calendrier Julien,
ça n'y ressemble pas (exemple : aujourd'hui donne : 2455458.926
Drôle de date !

Et si je passe ce chiffre (ou un autre) par la deuxième formule :
le Jour du Mois donne toujours zéro
le Mois ne colle jamais, que ce soit sur E-1 ou E-13
Il n'y a guère que l'année qui fonctionne bien.
N'y a-t-il pas des erreurs dans les formules ?

scratch
Revenir en haut Aller en bas
http://jjn4.e-monsite.com
Klaus

Klaus


Nombre de messages : 12274
Age : 74
Localisation : Ile de France
Date d'inscription : 29/12/2009

Date <-> Date julienne Empty
MessageSujet: Re: Date <-> Date julienne   Date <-> Date julienne EmptyDim 19 Sep 2010 - 10:39

En ce qui concerne les dates, il y a 3 modules Panoramic sur mon site:
http://membres.multimania.fr/klaus/Bienvenue.1.html
Cliquer sur le bouton "Panoramic", et ce sont les 3 premières lignes...
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
JL35




Nombre de messages : 7095
Localisation : 77
Date d'inscription : 29/11/2007

Date <-> Date julienne Empty
MessageSujet: Re: Date <-> Date julienne   Date <-> Date julienne EmptyDim 19 Sep 2010 - 14:25

Rapidement,je dois partir...
- la date julienne dont il est question plus haut n'a rien à voir avec le calendrier Julien.
(C'est une façon d'exprimer une date en nombre de jours qui partent du 1er janvier -4712 à 12h GMT)
L'avantage du calcul est de ne pas se préoccuper des longueurs des mois ni des années bissextiles.
La méthode a toutefois des limites pour les années inférieures à 1582, en particulier les années inférieures à 400 (pour de sombres questions d'années bissextiles je crois).
- Après un rapide coup d'oeil, il faut prendre les valeurs entières dans la plupart des calculs, un exemple vite fait:
Code:
LABEL D2JD, JD2D
DIM A, B, C, D, E, F, JD, W, X, Z, Jour, Mois, Annee

' Exemple: 14 juillet 1789
Jour = 14: Mois = 7: Annee = 1789

print Jour, "/", Mois, "/", Annee
print
GOSUB D2JD
PRINT "JD = " + STR$(JD)
print
GOSUB JD2D
print Jour, "/", Mois, "/", Annee
END

D2JD:
' Jour, Mois, Annee -> JD
IF Mois < 3 THEN Mois = Mois + 12: Annee = Annee - 1
A = INT(Annee/100)
B = INT(A/4)
C = 2-A+B
E = INT(365.25*(Annee+4716))
F = INT(30.6001*(Mois+1))
JD = C+Jour+E+F-1524.5
RETURN

JD2D:
' JD -> Jour, Mois, Annee
  Z = JD+0.5
  W = INT((Z - 1867216.25)/36524.25)
  X = INT(W/4)
  A = Z+1+W-X
  B = A+1524
  C = INT((B-122.1)/365.25)
  D = INT(365.25 * C)
  E = INT((B-D)/30.6001)
  F = INT(30.6001*E)
  Jour = B-D-F
  Mois = E-1: IF Mois > 12 THEN Mois = Mois - 12
  Annee = C-4716: IF Mois < 3 THEN Annee = Annee + 1
RETURN

J'ai édité le 1er post et l'exemple ci-dessus (les routines sont devenues identiques), qui étaient incomplets.

@Klaus dont acte pour tes routines sur les dates, mais ici c'est fait de façon très simple, avec un simple calcul, sans boucles sur les années avec tous les tests afférents, années bissextiles etc.
Mais il est vrai que pour une utilisation pratique, il faudra rajouter les tests de validité des données fournies.

PS pour jjn4 (et les autres): la "date julienne" est donc un nombre de jours, qui se termine toujours par .5, en effet, l'origine étant fixée le 1/1/-4712 à 12h GMT (jour 0) la date rendue est à 0h GMT, donc 1/2 jour plus tard (d'où le .5).
Enfin, pitié, ne pinaillez pas trop (jjn4 Mad ) sur mes explications un peu fumeuses, je suis loin d'être un spécialiste en la matière, et pour ceux que ça intéresse vraiment... -> google, l'essentiel est que le calcul fonctionne.
Revenir en haut Aller en bas
JL35




Nombre de messages : 7095
Localisation : 77
Date d'inscription : 29/11/2007

Date <-> Date julienne Empty
MessageSujet: Re: Date <-> Date julienne   Date <-> Date julienne EmptyDim 19 Sep 2010 - 19:56

Jour de la semaine:
A première vue, on doit pouvoir, à partir de la date julienne (JD), connaître le jour de la semaine correspondant, sachant que jusqu'à preuve du contraire les semaines ont toujours été de 7 jours.
Donc il suffit de connaître le reste de la division de la date julienne par 7 pour trouver le jour.
Ainsi:
Code:
joursemaine = INT(7*FRAC(JD/7))
ce qui donnera, expérience faite: 0 = mardi, 1 = mercredi, 2 = jeudi, 3 = vendredi, 4 = samedi, 5 = dimanche, 6 = lundi
Revenir en haut Aller en bas
jjn4

jjn4


Nombre de messages : 2690
Date d'inscription : 13/09/2009

Date <-> Date julienne Empty
MessageSujet: +++   Date <-> Date julienne EmptyLun 20 Sep 2010 - 18:47

Ah oui, là ça marche !
Et ça donne des perspectives intéressantes... !
scratch
Revenir en haut Aller en bas
http://jjn4.e-monsite.com
JL35




Nombre de messages : 7095
Localisation : 77
Date d'inscription : 29/11/2007

Date <-> Date julienne Empty
MessageSujet: Re: Date <-> Date julienne   Date <-> Date julienne EmptyLun 20 Sep 2010 - 21:16

Il me semble oui, l'avantage c'est que c'est un calcul très simple et très rapide (même si les termes sont un peu tordus, mais bon, l'ordinateur n'est pas regardant), ça évite les longues boucles sur les années comme je faisais avant, avec tests à chaque fois des années bissextiles, etc.
C'est facile de faire un calendrier, et toutes les opérations sur les dates, entre autres.

Le terme de 'date julienne' n'est sans doute pas très approprié (prête à confusion), je n'en ai pas d'autre mais le lecteur en fera ce qu'il voudra !
Ça ne vient pas de Jules César, comme pour le calendrier Julien, mais d'un certain Julius Scaliger, père de Josephus Justus Scaliger, qui a inventé l'idée de compter les jours en continu depuis... -4712.
Revenir en haut Aller en bas
Jean Claude

Jean Claude


Nombre de messages : 5948
Age : 69
Localisation : 83 Var
Date d'inscription : 07/05/2009

Date <-> Date julienne Empty
MessageSujet: Re: Date <-> Date julienne   Date <-> Date julienne EmptyLun 20 Sep 2010 - 21:29

Un tordu ce Julius Scaliger Very Happy
Revenir en haut Aller en bas
JL35




Nombre de messages : 7095
Localisation : 77
Date d'inscription : 29/11/2007

Date <-> Date julienne Empty
MessageSujet: Re: Date <-> Date julienne   Date <-> Date julienne EmptyLun 20 Sep 2010 - 21:47

Tu a raison, je l'ai bien connu, dans le temps...
Pourquoi -4712 ? il y a des raisons, mais je ne veux pas vous encombrer l'esprit avec ça !!! Very Happy
Revenir en haut Aller en bas
JL35




Nombre de messages : 7095
Localisation : 77
Date d'inscription : 29/11/2007

Date <-> Date julienne Empty
MessageSujet: Re: Date <-> Date julienne   Date <-> Date julienne EmptyLun 20 Sep 2010 - 23:04

Un exemple d'utilisation des routines ci-dessus: un petit calendrier vite fait (exécution rapide) !
(l'année et le fichier résultat et la largeur des colonnes sont à changer à volonté)
Code:
DIM A, B, C, D, E, F, JD, W, X, Z, Jour, Mois, Annee, Fichcal$
DIM sa, sj, j1, j2, jr, i, j, lc, a$, b$, mp, js$(7), ms$(12), li$(32)
LABEL D2JD, JD2D, Calendrier
js$(0) = "Mardi": js$(1) = "Mercredi": js$(2) = "Jeudi": js$(3) = "Vendredi"
js$(4) = "Samedi": js$(5) = "Dimanche": js$(6) = "Lundi"
ms$(1) = "Janvier": ms$(2) = "Février": ms$(3) = "Mars": ms$(4) = "Avril"
ms$(5) = "Mai": ms$(6) = "Juin": ms$(7) = "Juillet": ms$(8) = "Août"
ms$(9) = "Septembre": ms$(10) = "Octobre": ms$(11) = "Novembre": ms$(12) = "Décembre"

Fichcal$ = "Z:\Calendrier_2010.txt": ' ********** à modifier *************

lc = 10: ' largeur de colonnes du calendrier
Annee = 2010: GOSUB Calendrier
PRINT "Terminé !"
END

D2JD:
' Jour, Mois, Annee -> JD
IF Mois < 3 THEN Mois = Mois + 12: Annee = Annee - 1
A = INT(Annee/100)
B = INT(A/4)
C = 2-A+B
E = INT(365.25*(Annee+4716))
F = INT(30.6001*(Mois+1))
JD = C+Jour+E+F-1524.5
RETURN

JD2D:
' JD -> Jour, Mois, Annee
  Z = JD+0.5
  W = INT((Z - 1867216.25)/36524.25)
  X = INT(W/4)
  A = Z+1+W-X
  B = A+1524
  C = INT((B-122.1)/365.25)
  D = INT(365.25 * C)
  E = INT((B-D)/30.6001)
  F = INT(30.6001*E)
  Jour = B-D-F
  Mois = E-1: IF Mois > 12 THEN Mois = Mois - 12
  Annee = C-4716: IF Mois < 3 THEN Annee = Annee + 1
RETURN

Calendrier:
sa = Annee: Mois = 1: Jour = 1: GOSUB D2JD: j1 = JD
Annee = sa: Mois = 12: Jour = 31: GOSUB D2JD: j2 = JD
mp = 0: sj = 31
FOR JD = j1 TO j2
    GOSUB JD2D: jr = INT(7*FRAC(JD/7))
    IF Mois <> mp
        IF sj < 31 AND Mois > 1
            FOR i = sj+1 TO 31: li$(i) = li$(i) + STRING$(lc, " "): NEXT i
        END_IF
        b$ = UPPER$(ms$(Mois)): IF lc < 10 THEN b$ = LEFT$(b$, lc-1)
        a$ = b$+ STRING$(lc-LEN(b$), " ")
        li$(0) = li$(0) + a$
        mp = Mois
    END_IF
    a$ = LEFT$(js$(jr), 2) + " " + STR$(Jour)
    a$ = a$ + STRING$(lc-LEN(a$), " ")
    li$(Jour) = li$(Jour) + a$
    sj = Jour
NEXT JD
FILE_OPEN_WRITE 1, Fichcal$
    a$ = STRING$(lc*6-8, "-") + " CALENDRIER " + STR$(sa)
    FILE_WRITELN 1, a$ + STRING$(lc*12 - LEN(a$), "-")
    FOR i = 0 TO 31: FILE_WRITELN 1, li$(i): NEXT i
    FILE_WRITELN 1, STRING$(lc*12, "-")
FILE_CLOSE 1
RETURN
Revenir en haut Aller en bas
Contenu sponsorisé





Date <-> Date julienne Empty
MessageSujet: Re: Date <-> Date julienne   Date <-> Date julienne Empty

Revenir en haut Aller en bas
 
Date <-> Date julienne
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Combo date : sélecteur de date
» Date$
» A propos de date...
» SPIN et DATE
» Date de pérenption

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC :: Vos sources, vos utilitaires à partager-
Sauter vers: