Ce code retourne Erreur: -1 pour toute valeur antérieure à 70 dans le
champs dc.tm_year de la struct.
Je sais maintenant que la fonction mktime est limitée à ne gérer que les
dates comprises entre 1/1/70 et 2038.
Ma question: comment (quelles fonctions ou quelles astuces) faire pour
les dates antérieures (pour par exemple retrouver le jour de la semaine,
calculer le nombre de secondes, etc...). Des liens vers des documents
seront suffisants, un bout de code serait un must, mais bon ne vous
prenez pas la tête, c'est juste que je suis assez curieux de savoir.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Nicolas George
Jacques wrote in message <cvn8n6$9fb$:
Ma question: comment (quelles fonctions ou quelles astuces) faire pour les dates antérieures (pour par exemple retrouver le jour de la semaine, calculer le nombre de secondes, etc...).
Eh bien, le calendrier grégorien est assez bien documenté, et il est assez facile (quoi qu'un peu fastidieux) d'implémenter les fonctions correspondantes. Les histoires de secondes intercalaires et d'heure locale sont plus pénibles, mais ce ne sont en gros que des bases de données.
Il y a des fonctions sur les dates dans Glib, cf. <URL: http://developer.gnome.org/doc/API/2.0/glib/glib-Date-and-Time-Functions.html >.
Jacques wrote in message <cvn8n6$9fb$1@s1.news.oleane.net>:
Ma question: comment (quelles fonctions ou quelles astuces) faire pour
les dates antérieures (pour par exemple retrouver le jour de la semaine,
calculer le nombre de secondes, etc...).
Eh bien, le calendrier grégorien est assez bien documenté, et il est assez
facile (quoi qu'un peu fastidieux) d'implémenter les fonctions
correspondantes. Les histoires de secondes intercalaires et d'heure locale
sont plus pénibles, mais ce ne sont en gros que des bases de données.
Il y a des fonctions sur les dates dans Glib, cf. <URL:
http://developer.gnome.org/doc/API/2.0/glib/glib-Date-and-Time-Functions.html >.
Ma question: comment (quelles fonctions ou quelles astuces) faire pour les dates antérieures (pour par exemple retrouver le jour de la semaine, calculer le nombre de secondes, etc...).
Eh bien, le calendrier grégorien est assez bien documenté, et il est assez facile (quoi qu'un peu fastidieux) d'implémenter les fonctions correspondantes. Les histoires de secondes intercalaires et d'heure locale sont plus pénibles, mais ce ne sont en gros que des bases de données.
Il y a des fonctions sur les dates dans Glib, cf. <URL: http://developer.gnome.org/doc/API/2.0/glib/glib-Date-and-Time-Functions.html >.
Fred
Salut à tous,
Soit le code suivant :
---- #include <stdio.h> #include <time.h>
#define SIZE 256
int main (int argc, char *argv[]) { time_t td; struct tm dc; char buffer[SIZE];
Ce code retourne Erreur: -1 pour toute valeur antérieure à 70 dans le champs dc.tm_year de la struct.
Je sais maintenant que la fonction mktime est limitée à ne gérer que les dates comprises entre 1/1/70 et 2038.
Ma question: comment (quelles fonctions ou quelles astuces) faire pour les dates antérieures (pour par exemple retrouver le jour de la semaine, calculer le nombre de secondes, etc...). Des liens vers des documents seront suffisants, un bout de code serait un must, mais bon ne vous prenez pas la tête, c'est juste que je suis assez curieux de savoir.
Merci,
Jacques
Une petite astuce au passage : Il est intéressant de gérer les dates sous la forme d'un "double" représentant le nombre de millisecondes écoulées depuis le 1er janvier 1970. Ceci permet une plage énorme avec une précision variable : dans les dates actuelles, la précision est de la milliseconde, pour l'époque des dinosaures (nombre négatif) la précision est plus faible mais ce n'est pas trop grave. Pour les dates comprises entre 1970 et 2038, on divise par 1000 et on peut utiliser les fonctions du genre mktime. Il reste à traiter les "anomalies" du passage du calendrier julien au grégorien (anomalies qui ne se situent pas aux mêmes époques suivant le pays !). Pour la France, il faut tenir compte d'un "trou" de 11 jours après le 3 septembre 1752. En clair on est passé du 3/9/1752 au 15/9/1752 du jour au lendemain ;-)
A+
Fred
Salut à tous,
Soit le code suivant :
----
#include <stdio.h>
#include <time.h>
#define SIZE 256
int main (int argc, char *argv[])
{
time_t td;
struct tm dc;
char buffer[SIZE];
Ce code retourne Erreur: -1 pour toute valeur antérieure à 70 dans le
champs dc.tm_year de la struct.
Je sais maintenant que la fonction mktime est limitée à ne gérer que les
dates comprises entre 1/1/70 et 2038.
Ma question: comment (quelles fonctions ou quelles astuces) faire pour
les dates antérieures (pour par exemple retrouver le jour de la semaine,
calculer le nombre de secondes, etc...). Des liens vers des documents
seront suffisants, un bout de code serait un must, mais bon ne vous
prenez pas la tête, c'est juste que je suis assez curieux de savoir.
Merci,
Jacques
Une petite astuce au passage :
Il est intéressant de gérer les dates sous la forme d'un "double"
représentant le nombre de millisecondes écoulées depuis le 1er janvier 1970.
Ceci permet une plage énorme avec une précision variable : dans les
dates actuelles, la précision est de la milliseconde, pour l'époque des
dinosaures (nombre négatif) la précision est plus faible mais ce n'est
pas trop grave.
Pour les dates comprises entre 1970 et 2038, on divise par 1000 et on
peut utiliser les fonctions du genre mktime.
Il reste à traiter les "anomalies" du passage du calendrier julien au
grégorien (anomalies qui ne se situent pas aux mêmes époques suivant le
pays !). Pour la France, il faut tenir compte d'un "trou" de 11 jours
après le 3 septembre 1752. En clair on est passé du 3/9/1752 au
15/9/1752 du jour au lendemain ;-)
Ce code retourne Erreur: -1 pour toute valeur antérieure à 70 dans le champs dc.tm_year de la struct.
Je sais maintenant que la fonction mktime est limitée à ne gérer que les dates comprises entre 1/1/70 et 2038.
Ma question: comment (quelles fonctions ou quelles astuces) faire pour les dates antérieures (pour par exemple retrouver le jour de la semaine, calculer le nombre de secondes, etc...). Des liens vers des documents seront suffisants, un bout de code serait un must, mais bon ne vous prenez pas la tête, c'est juste que je suis assez curieux de savoir.
Merci,
Jacques
Une petite astuce au passage : Il est intéressant de gérer les dates sous la forme d'un "double" représentant le nombre de millisecondes écoulées depuis le 1er janvier 1970. Ceci permet une plage énorme avec une précision variable : dans les dates actuelles, la précision est de la milliseconde, pour l'époque des dinosaures (nombre négatif) la précision est plus faible mais ce n'est pas trop grave. Pour les dates comprises entre 1970 et 2038, on divise par 1000 et on peut utiliser les fonctions du genre mktime. Il reste à traiter les "anomalies" du passage du calendrier julien au grégorien (anomalies qui ne se situent pas aux mêmes époques suivant le pays !). Pour la France, il faut tenir compte d'un "trou" de 11 jours après le 3 septembre 1752. En clair on est passé du 3/9/1752 au 15/9/1752 du jour au lendemain ;-)
A+
Fred
Jacques L'helgoualc'h
Le 28-02-2005, Fred a écrit : [...]
Il reste à traiter les "anomalies" du passage du calendrier julien au grégorien (anomalies qui ne se situent pas aux mêmes époques suivant le pays !). Pour la France, il faut tenir compte d'un "trou" de 11 jours après le 3 septembre 1752. En clair on est passé du 3/9/1752 au 15/9/1752 du jour au lendemain ;-)
Heu, ça c'est en Angleterre, d'après la doc de gcal : (/usr/share/doc/gcal/GREG-REFORM)
#---------------------------------------
Chronology of Introduction of the Gregorian calendar.
Country Last day of First day of Gcal option Julian Gregorian calendar calendar
Reference: S.J. Seleschnikow, "Wieviele Monde hat das Jahr?" (Kleine Kalenderkunde), Aulis-Verlag Deubner & Co. KG, K"oln, 1'te Auflage 1981, ISBN 3-7516-060-2
---------- Footnotes ----------
(1) In protestant parts of Germany. In some catholic minor states (Westfalen, W"urzburg, Mainz, Freiburg etc.), the new calendar was introduced during the years 1583/1584.
#---------------------------------------
-- Jacques L'helgoualc'h
Le 28-02-2005, Fred <fred@work.com> a écrit :
[...]
Il reste à traiter les "anomalies" du passage du calendrier julien au
grégorien (anomalies qui ne se situent pas aux mêmes époques suivant le
pays !). Pour la France, il faut tenir compte d'un "trou" de 11 jours
après le 3 septembre 1752. En clair on est passé du 3/9/1752 au
15/9/1752 du jour au lendemain ;-)
Heu, ça c'est en Angleterre, d'après la doc de gcal :
(/usr/share/doc/gcal/GREG-REFORM)
#---------------------------------------
Chronology of Introduction of the Gregorian calendar.
Country Last day of First day of Gcal option
Julian Gregorian
calendar calendar
Reference:
S.J. Seleschnikow, "Wieviele Monde hat das Jahr?" (Kleine
Kalenderkunde), Aulis-Verlag Deubner & Co. KG, K"oln, 1'te Auflage
1981, ISBN 3-7516-060-2
---------- Footnotes ----------
(1) In protestant parts of Germany. In some catholic minor states
(Westfalen, W"urzburg, Mainz, Freiburg etc.), the new calendar was
introduced during the years 1583/1584.
Il reste à traiter les "anomalies" du passage du calendrier julien au grégorien (anomalies qui ne se situent pas aux mêmes époques suivant le pays !). Pour la France, il faut tenir compte d'un "trou" de 11 jours après le 3 septembre 1752. En clair on est passé du 3/9/1752 au 15/9/1752 du jour au lendemain ;-)
Heu, ça c'est en Angleterre, d'après la doc de gcal : (/usr/share/doc/gcal/GREG-REFORM)
#---------------------------------------
Chronology of Introduction of the Gregorian calendar.
Country Last day of First day of Gcal option Julian Gregorian calendar calendar
Reference: S.J. Seleschnikow, "Wieviele Monde hat das Jahr?" (Kleine Kalenderkunde), Aulis-Verlag Deubner & Co. KG, K"oln, 1'te Auflage 1981, ISBN 3-7516-060-2
---------- Footnotes ----------
(1) In protestant parts of Germany. In some catholic minor states (Westfalen, W"urzburg, Mainz, Freiburg etc.), the new calendar was introduced during the years 1583/1584.
#---------------------------------------
-- Jacques L'helgoualc'h
Nicolas George
Fred wrote in message <cvuokg$9lf$:
Il est intéressant de gérer les dates sous la forme d'un "double" représentant le nombre de millisecondes écoulées depuis le 1er janvier 1970.
Pourquoi travailler avec des millisecondes si c'est un double ? La seconde est quand même en général plus pratique.
D'un autre côté, personnellement, je n'aime pas tant que ça utiliser des flottants quand ce n'est pas réellement nécessaire. D'abord, la précision est toujours un peu floue, en particulier on ne peut souvent pas utiliser une vraie égalité pour comparer deux flottants. Ensuite, sur un matériel dénué de FPU mais pour lequel on n'a pas compilé dans ce sens, ça peut être très coûteux.
Personnellement, j'ai un petit faible pour la représentation en microsecondes sur un entier 64 bits : ça offre un bon comprimis entre la précision, la durée de validité, et la manipulation efficace par les processeurs et compilateurs actuels.
Fred wrote in message <cvuokg$9lf$1@smb-pub.grenoble.eur.slb.com>:
Il est intéressant de gérer les dates sous la forme d'un "double"
représentant le nombre de millisecondes écoulées depuis le 1er janvier 1970.
Pourquoi travailler avec des millisecondes si c'est un double ? La seconde
est quand même en général plus pratique.
D'un autre côté, personnellement, je n'aime pas tant que ça utiliser des
flottants quand ce n'est pas réellement nécessaire. D'abord, la précision
est toujours un peu floue, en particulier on ne peut souvent pas utiliser
une vraie égalité pour comparer deux flottants. Ensuite, sur un matériel
dénué de FPU mais pour lequel on n'a pas compilé dans ce sens, ça peut être
très coûteux.
Personnellement, j'ai un petit faible pour la représentation en
microsecondes sur un entier 64 bits : ça offre un bon comprimis entre la
précision, la durée de validité, et la manipulation efficace par les
processeurs et compilateurs actuels.
Il est intéressant de gérer les dates sous la forme d'un "double" représentant le nombre de millisecondes écoulées depuis le 1er janvier 1970.
Pourquoi travailler avec des millisecondes si c'est un double ? La seconde est quand même en général plus pratique.
D'un autre côté, personnellement, je n'aime pas tant que ça utiliser des flottants quand ce n'est pas réellement nécessaire. D'abord, la précision est toujours un peu floue, en particulier on ne peut souvent pas utiliser une vraie égalité pour comparer deux flottants. Ensuite, sur un matériel dénué de FPU mais pour lequel on n'a pas compilé dans ce sens, ça peut être très coûteux.
Personnellement, j'ai un petit faible pour la représentation en microsecondes sur un entier 64 bits : ça offre un bon comprimis entre la précision, la durée de validité, et la manipulation efficace par les processeurs et compilateurs actuels.
Fred
[...]
Il reste à traiter les "anomalies" du passage du calendrier julien au grégorien (anomalies qui ne se situent pas aux mêmes époques suivant le pays !). Pour la France, il faut tenir compte d'un "trou" de 11 jours après le 3 septembre 1752. En clair on est passé du 3/9/1752 au 15/9/1752 du jour au lendemain ;-)
Heu, ça c'est en Angleterre, d'après la doc de gcal : (/usr/share/doc/gcal/GREG-REFORM)
#---------------------------------------
Chronology of Introduction of the Gregorian calendar.
Country Last day of First day of Gcal option Julian Gregorian calendar calendar
Reference: S.J. Seleschnikow, "Wieviele Monde hat das Jahr?" (Kleine Kalenderkunde), Aulis-Verlag Deubner & Co. KG, K"oln, 1'te Auflage 1981, ISBN 3-7516-060-2
---------- Footnotes ----------
(1) In protestant parts of Germany. In some catholic minor states (Westfalen, W"urzburg, Mainz, Freiburg etc.), the new calendar was introduced during the years 1583/1584.
#---------------------------------------
Très bien ! Y-en a 1 qui suit ;-)
Fred
[...]
Il reste à traiter les "anomalies" du passage du calendrier julien au
grégorien (anomalies qui ne se situent pas aux mêmes époques suivant le
pays !). Pour la France, il faut tenir compte d'un "trou" de 11 jours
après le 3 septembre 1752. En clair on est passé du 3/9/1752 au
15/9/1752 du jour au lendemain ;-)
Heu, ça c'est en Angleterre, d'après la doc de gcal :
(/usr/share/doc/gcal/GREG-REFORM)
#---------------------------------------
Chronology of Introduction of the Gregorian calendar.
Country Last day of First day of Gcal option
Julian Gregorian
calendar calendar
Reference:
S.J. Seleschnikow, "Wieviele Monde hat das Jahr?" (Kleine
Kalenderkunde), Aulis-Verlag Deubner & Co. KG, K"oln, 1'te Auflage
1981, ISBN 3-7516-060-2
---------- Footnotes ----------
(1) In protestant parts of Germany. In some catholic minor states
(Westfalen, W"urzburg, Mainz, Freiburg etc.), the new calendar was
introduced during the years 1583/1584.
Il reste à traiter les "anomalies" du passage du calendrier julien au grégorien (anomalies qui ne se situent pas aux mêmes époques suivant le pays !). Pour la France, il faut tenir compte d'un "trou" de 11 jours après le 3 septembre 1752. En clair on est passé du 3/9/1752 au 15/9/1752 du jour au lendemain ;-)
Heu, ça c'est en Angleterre, d'après la doc de gcal : (/usr/share/doc/gcal/GREG-REFORM)
#---------------------------------------
Chronology of Introduction of the Gregorian calendar.
Country Last day of First day of Gcal option Julian Gregorian calendar calendar
Reference: S.J. Seleschnikow, "Wieviele Monde hat das Jahr?" (Kleine Kalenderkunde), Aulis-Verlag Deubner & Co. KG, K"oln, 1'te Auflage 1981, ISBN 3-7516-060-2
---------- Footnotes ----------
(1) In protestant parts of Germany. In some catholic minor states (Westfalen, W"urzburg, Mainz, Freiburg etc.), the new calendar was introduced during the years 1583/1584.
#---------------------------------------
Très bien ! Y-en a 1 qui suit ;-)
Fred
Laurent Wacrenier
Jacques L'helgoualc'h <lhh+ écrit:
France 09-Dec-1582 20-Dec-1582 `--gregorian-reform82,12,10,19'
C'est bon pour la France de l'époque. Pour l'Alsace par exemple, la longue nuit a eu lieu en 1648 (avec des particularités pour Strasbourg ou si on était catholique ou protestant).
Jacques L'helgoualc'h <lhh+nospam@free.fr> écrit:
France 09-Dec-1582 20-Dec-1582 `--gregorian-reform82,12,10,19'
C'est bon pour la France de l'époque. Pour l'Alsace par exemple, la
longue nuit a eu lieu en 1648 (avec des particularités pour Strasbourg
ou si on était catholique ou protestant).
France 09-Dec-1582 20-Dec-1582 `--gregorian-reform82,12,10,19'
C'est bon pour la France de l'époque. Pour l'Alsace par exemple, la longue nuit a eu lieu en 1648 (avec des particularités pour Strasbourg ou si on était catholique ou protestant).