J'ai le code suivant pour trouver la différence entre le fuseau horaire UTC et le fuseau horaire local.C++ - Conversion de fuseau horaire
struct tm *local_time, *gmt_time;
time_t t = time(NULL);
local_time = localtime(&t);
gmt_time = gmtime(&t);
int y = mktime(local_time);
int x = mktime(gmt_time);
tzone_diff = y - x;
Cela ne fonctionne pas. Cependant, si je déplace l'instruction gmt_time = gmtime (& t) ci-dessous int y = mktime (heure locale); Ça marche. C'est le morceau de code suivant fonctionne:
struct tm *local_time, *gmt_time;
time_t t = time(NULL);
local_time = localtime(&t);
int y = mktime(local_time);
gmt_time = gmtime(&t);
int x = mktime(gmt_time);
tzone_diff = y - x;
Cela semble bizarre à moi .. Des indices? Localtime et gmtime retournent tous les deux un pointeur sur un struct tm.
L'emplacement de temp pourrait être le même. Mais gmtime() et localtime() devraient modifier "temp" à leur manière? Ce que je trouve est que seul le premier appel (gmtime() ou localtime()) modifie la structure. – Prabhu
Puisque gmtime et localtime retournent des pointeurs vers la même structure, les deux pointeurs local_time et gmt_time pointent vers les mêmes données. Lorsque vous appelez gmtime, les données pointées par local_time sont mises à jour et il vous reste deux pointeurs sur la même structure tm, ce qui vous donnera une différence de fuseau horaire de 0. – Erik