Re: Ada.Calendar.Time

Thomas De Contes <[email protected]>
Newsgroups gmane.comp.lang.ada.france
Message-ID <[email protected]>
Le 2 mars 08 à 10:44, Jean-Pierre Rosen a écrit :

> Thomas De Contes a écrit :
>> Je cherche à manipuler et à stocker des dates au jour près et à la
>> seconde près (pas en même temps, la précision dont j'ai besoin dépend
>> des circonstances)
>> [...]
>
>> J'ai regardé tous les Ada.Calendar.*, et j'ai pas trouvé comment
>> faire ce genre de chose simplement.
> Qu'est-ce qui ne va pas dans Ada.Calendar.Difference ?

Tu veux dire Ada.Calendar.Arithmetic.Difference ?


http://www.adaic.org/standards/05rm/html/RM-9-6-1.html 44/2

Qu'est ce que c'est les "leap seconds" ? c'est comme les 29/2 ?

Il parait que les OS ne les supportent pas tous (89/2),
ça veut dire qu'une valeur de type Time donnée ne correspond pas  
forcément à la même date sur tous les ordinateurs ?


Pour commencer, le moins important :
j'aurais préféré avoir un type entier pour les secondes (avec un  
paramètre Sub_Second en plus, si il le fallait)

Le paramètre Days, il est donné avec les "leap seconds" inclues ou  
exclues ?

Si c'est "leap seconds" exclues, ça fait une difficulté pour calculer  
le nb de jours,
puisqu'il faut vérifier si Seconds + Leap_Seconds ça fait pas un (ou  
des ?) jour en plus

Si c'est "leap seconds" inclues, ça fait une difficulté pour calculer  
le nb de secondes,
puisque deja Seconds c'est pas le nb de secondes total, mais le nb de  
secondes en plus des jours,
mais en plus (si je suis pas à coté de la plaque) il ne suffit plus  
de multiplier le nb de jours par un coef fixe pour avoir le nb de  
secondes correspondant ...


Pour faire l'opération dans l'autre sens, il suffit d'utiliser
    function "+" (Left : Time;      Right : Day_Count) return Time;
et
    function "+" (Left : Time;     Right : Duration) return Time;
?
(je pense que oui)



Merci pour ta préconisation, puisque j'hésitais entre plusieurs  
choses (dont aucune idéale) :-)

Mais je vais devoir faire un paquetage pour manipuler ces données là,
je ne peux pas utiliser Ada.Calendar.* en l'état directement dans un  
prgm
(Par exemple :
Si je fais la différence entre le 2 du mois à 23h50 et le 3 à 0h10,  
je vais avoir 0 j et 20 min de différence.
Il faut que je choisisse une date de référence avec 0h0min0s, que je  
fasse la différence entre la date de référence et chaque date donnée,  
que j'arrondisse les résultats au jour près, et que je fasse la  
diference entre les résultats.
Et là je trouverai 1 j de différence ! ouf ! :-) )

Et reconnais que le risque d'erreurs n'est pas négligeable ...
(principalement mauvaise gestion des "leap seconds")


-- 
j'agis contre l'assistanat, je travaille dans une SCOP !


_______________________________________________
Site WWW de l'association Ada-France: http://www.ada-france.org/
[email protected]
http://www.ada-france.org/mailman/listinfo/ada-france
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.