Les limites de mktime

Résolu
Mastersam Messages postés 116 Date d'inscription dimanche 26 septembre 2004 Statut Membre Dernière intervention 13 février 2008 - 28 juil. 2007 à 13:07
Mastersam Messages postés 116 Date d'inscription dimanche 26 septembre 2004 Statut Membre Dernière intervention 13 février 2008 - 24 août 2007 à 11:24
Bonjour j'ai rencontré un problème étrange,

J'utilise mktime pour convertir des dates lues dans un fichier, j'ai créé une fonction pour parser mon char* contenant date et heure sous forme 2007/07/28 13:01:00, jusque là pas de problème.

Mais il semblerais que mktime ait une limite haute pour les dates, ainsi à la lecture d'une ligne dont l'année est 2080 par exemple, mktime me retourne le code d'erreur -1. Le seul soucis c'est que je ne trouve pas, dans les manuels de C du net, un quelconque avertissement contre une date trop élevée lors de l'utilisation de mktime();  .

Est-ce que quelqu'un est au courant de cette spécification ?

Merci d'avance

http://www.rc-bot.com/bannieres/banniere468x60.jpg

6 réponses

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
28 juil. 2007 à 13:45
19 janvier 2038 MAXI.

ciao...
BruNews, MVP VC++
3
cs_Matt67 Messages postés 549 Date d'inscription samedi 6 septembre 2003 Statut Membre Dernière intervention 6 mars 2010 3
28 juil. 2007 à 21:41
Bonsoir,

Aller, pour être préçis, sans être utile : 19/01/2038 04:14:07.

Matt...
3
Mastersam Messages postés 116 Date d'inscription dimanche 26 septembre 2004 Statut Membre Dernière intervention 13 février 2008
8 août 2007 à 21:44
Merci beaucoup, désolé du retard j'étais en vacances et privé d'internet !

Est-ce que vous savez à quoi celà est-il du (pour ma culture générale) et surtout comment corriger le problème ?

A bientôt

http://www.rc-bot.com/bannieres/banniere468x60.jpg
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
8 août 2007 à 21:57
J'ai oublié time.h depuis des lustres, je code sous et pour Windows.

ciao...
BruNews, MVP VC++
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Matt67 Messages postés 549 Date d'inscription samedi 6 septembre 2003 Statut Membre Dernière intervention 6 mars 2010 3
23 août 2007 à 22:33
Bonsoir,

Si tu fais un mktime de 19/01/2038 04:14:07, tu obtiens le nombre de secondes depuis le 01/01/1970 00:00:00 soit 2147483647 secondes donc 2^31 - 1.
Et qu'est que cela fait si on ajoute 1 à un entier signé égal à 2147483647 ?
Fais un test et tu comprendra ...

Matt...
0
Mastersam Messages postés 116 Date d'inscription dimanche 26 septembre 2004 Statut Membre Dernière intervention 13 février 2008
24 août 2007 à 11:24
Salut Matt, ok j'ai compris que c'était dû à la capacité maxi des entiers.

Existe-il une librairie C multiplatforme qui corrige ce problème ? Car de plus, avec time.h j'ai encore un problème de GMT ou d'heure d'été quand je converti un UTC en heure locale, en ce moment il me manque encore une heure et je ne sais pas trop d'ou celà provient.

Merci pour vos réponses en tous cas.

A bientôt

http://www.rc-bot.com/bannieres/banniere468x60.jpg
0
Rejoignez-nous