Bonjour,
Je voudrais une fonction qui me retourne le décalage courant par rapport à l'heure GMT (-1; +0; +1; +2 heures ?).
C'est pour un programme Windows, mais si le code est portable, c'est mieux ;)
Version imprimable
Bonjour,
Je voudrais une fonction qui me retourne le décalage courant par rapport à l'heure GMT (-1; +0; +1; +2 heures ?).
C'est pour un programme Windows, mais si le code est portable, c'est mieux ;)
Salut,
L'un des résultats fournis par google nous renvoie directement sur le forum...
C'est une réponse qui a été donnée il y a longtemps, et pour un RAD particulier, mais elle devrait pouvoir t'orienter vers quelque chose de correct ;)
Effectivement, j'ai trouvé une solution portable dans l'aide de C++ Builder :
L'exécution de ce programme m'indique bien que nous sommes à GMT + 1Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 #include <cstdlib> #include <iostream> #include <time.h> int main(int argc, char *argv[]) { time_t t; struct tm * gmt, * area; t = time( NULL ); area = localtime( &t ); int h_loc = area->tm_hour; gmt = gmtime( &t ); int h_gmt = gmt->tm_hour; std::cout << "decalage = " << h_loc - h_gmt << endl; return EXIT_SUCCESS; }// main
Merci.
Attention, cette méthode n'est pas tout à fait correcte.
D'abord je pense qu'elle donne un résultat incorrect si on est de l'autre côté de la ligne de changement de jour (c'est pas courant, mais il y a des programmes et des applications qui sont concernés)
D'autres part, il y a des pays dont le décalage horaire n'est pas forcément en nombre entier d'heures.
Selon Wiki (http://fr.wikipedia.org/wiki/Fuseau_horaire) :
Mysore, Karnataka, Inde (UTC+5:30)
Katmandou, Népal (UTC+5:45)
Donc pour calculer le décalage horaire, il faut aussi prendre en compte les autres membres de la structure tm. Ce qui peut arriver arrivera (c'est Murphy qui le dit :()
Non... En l'occurence, c'est fingale qui le dit...
Murphy, lui, il dit que s'il y deux façons de faire les choses dont une, selon fingale qui provoquera un désastre, tu trouvera toujours quelqu'un qui utilisera cette façon ;):P
Ici, le pauvre Murphy n'a rien à voir dans l'histoire ;) :D
Mince, une erreur judiciaire. J'accuse Murphy alors que c'est Fingale. Mea culpa.
Ne serait-ce pas plutôt Finagle que Fingale ?