Forum Liberty Basic France

Général » Les dates ... En jours juliens ?
Le 18/01/2014 à 20h38

Libertynaute Actif

Groupe: Membre

Inscrit le: 04/12/2012
Messages: 139
Bonsoir,
Quelqu'un a-t-il déjà une petite routine ou quelques lignes de code qui me donne la position d'un jour dans l'année. Par exemple, le 1er janveir est 1, et le 31 décembre 365, si l'année n'est pas bissextile.
Je devrais avoir quelque part quelque chose en COBOL, mais je ne sais pas où dans mes archives, et j'ai la flemme de recréer la roue (pour une fois !!)
Merci à tous.
Bonne nuit
Horace

____________________
The Basic and I

Mail Web    
Le 18/01/2014 à 22h57

Administrateur

Groupe: Administrateur

Inscrit le: 04/03/2012
Messages: 2083
Tu a plusieurs versions de "Planning" dans: "Projets Open Source", qui utilisent les jours de la semaine, du mois, de l'année.
Je t'averti, ce sont des vraies usines à gaz, mais en y regardant un peu et avec quelques questions tu devrais y trouver ce que tu cherche.
____________________
Roro

   
Le 20/01/2014 à 21h52

Libertynaute Actif

Groupe: Membre

Inscrit le: 04/12/2012
Messages: 139
Bonsoir,
Une fois que le problème est bien posé, les solutions arrivent toutes seules !
Je l'ai toujours dit :
Poser un faux problème et vous aurez de fausses solutions !
Tout ça pour dire que j'ai résolu mon problème qui était :
Lire un enregistrement dans un fichier random (366 enregs), en fonction du jour de l'année.
Soluce :
D'abord :
Code BBCODE :
[LOADMOIS]
    MM(1) = 0
    MM(2) = MM(1) + 31
    MM(3) = MM(2) + FEV
    MM(4) = MM(3) + 31
    MM(5) = MM(4) + 30
    MM(6) = MM(5) + 31
    MM(7) = MM(6) + 30
    MM(8) = MM(7) + 31
    MM(9) = MM(8) + 30
    MM(10) = MM(9) + 31
    MM(11) = MM(10) + 30
    MM(12) = MM(11) + 31
RETURN

FEV est une variable obtenue comme suit :
Code BBCODE :
[TRAIDATE]
    DATESYS$ = DATE$("yyyy/mm/dd")
    WAA$ = LEFT$(DATESYS$,4)
    WJJ$ = RIGHT$(DATESYS$,2)
    WMM$ = MID$(DATESYS$,6,2)
    WAA = VAL(WAA$)
    WMM = VAL(WMM$)
    WJJ = VAL(WJJ$)
' BISSEXTILE
    WBI = WAA / 4
    WBII = INT(WBI)
    FEV = 29
    IF WBI <> WBII THEN FEV = 28
RETURN


Puis :
Code BBCODE :
    INPUT "MOIS "; MW
    INPUT "JOUR "; JW
    TAG = MM(MW) + JW
    PRINT TAG, MM(MW)
    GET #9, TAG


Le print n'est là que pour contrôle !
Et volà, c'était tout simple, il suffidait d'y penser. Merci Christophe Colomb et son oeuf !
Sur ce, bonne nuit à tous.
Horace
____________________
The Basic and I

Mail Web    
Le 20/01/2014 à 22h35

Administrateur

Groupe: Administrateur

Inscrit le: 25/09/2010
Messages: 361
Il y a un problème avec le calcul des années bissextiles. C'est tout les ans multiple de 4, sauf les multiples de 100, re-sauf les multiples de 400. Ainsi, 1903 => pas bissextile, 1904 => bissextile, 1900 => pas bissextile, 1600 => bissextile.
Très simple n'est-ce pas ;)
____________________
J'ai toujours raison ! Sauf quand j'ai tort ...

Web    
Le 21/01/2014 à 15h38

Libertynaute Actif

Groupe: Membre

Inscrit le: 04/12/2012
Messages: 139
C'est vrai, Jag, mais le programme que je mijot ne devrai pas passer l'année 2100 ! Et moi non plus !
Alors, bissextile ou pas, je ne serai plus là pour le voir !
Mais si on voulait faire vrai, par exemple pour le calcul de la fête de Pâques pour n'importe quelle année ...
Alors, la solution :
découper l'année en SS et AA
Si AA est divisible par 4, alors bissextile sauf si AA = 0 et SS pas divisible par 4 !
Comme tu le dis, très simple !
Merci de te pencher sur ce genre de problèmes !
Horace
____________________
The Basic and I

Mail Web    
Le 22/01/2014 à 13h00

Administrateur

Groupe: Administrateur

Inscrit le: 25/09/2010
Messages: 361
C'était juste pour rajouter mon grain de sel :)

Jag
____________________
J'ai toujours raison ! Sauf quand j'ai tort ...

Web    
Le 22/01/2014 à 14h31

Libertynaute Actif

Groupe: Membre

Inscrit le: 04/12/2012
Messages: 139
J'apprécie !
H.
____________________
The Basic and I

Mail Web    
Général » Les dates ... En jours juliens ?  

 |  |

1 Utilisateur en ligne : 0 Administrateur, 0 Modérateur, 0 Membre et 1 Visiteur
Utilisateur en ligne : Aucun membre connecté
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie