J'écris du code pour me donner un historique des dernières commandes écrites dans un shell, y compris l'heure, au format heure: minutes.Problème de calcul de l'heure du jour en utilisant time()
Je le code suivant:
// Modulo by 86400, number of seconds in a day
int totalSeconds = history_time[i] % 86400;
int hours = totalSeconds/3600;
int minutes = (totalSeconds % 3600)/60;
printf("%d %d:%d %s\n", count+1, hours, minutes, history[i]);
je stocke le temps comme dans les domaines suivants:
time_t history_time[MAX_HISTORY_SIZE];
// Store the time
time_t t = time(NULL);
history_time[history_index] = t;
L'heure se trouve être mal, mais je ne sais pas pourquoi. J'utilise Solaris.
La sortie est la suivante:
1 18:29 ls
2 18:29 cd
3 18:29 ls -al | grep test
Les minutes sont corrects, mais pas l'heure. Lorsque vous tapez "date" dans la ligne de commande, je reçois: "jeu 16 septembre 14:29:55 EDT 2010", donc même minutes mais heure différente.
Je ne suis pas sûr s'il s'agit de mon code ou de la fonction time() dans Solaris? Peut-être que la date n'utilise pas la fonction time(), je ne suis pas sûr.
Quelqu'un a-t-il une solution?
Merci beaucoup,
Jary
Vous vous rendez compte que time() donne l'heure ou les secondes du calendrier "UTC" depuis l'époque (1er janvier 1970 00:00:00)? Cela signifie que l'heure que vous regardez sera décalée de vos paramètres régionaux d'un montant prévisible (votre décalage par rapport au méridien UTC). Est-ce pas le problème? –