2011-11-04 6 views
0

Selon http://www.cplusplus.com/reference/clibrary/ctime/time_t/ time_t est le nombre de secondes écoulées depuis minuit 1/1/1970 UTC. Donc, si j'appelle la fonction time comme documentée ici http://www.cplusplus.com/reference/clibrary/ctime/time/ le nombre de secondes retourné va-t-il de l'époque jusqu'à maintenant en UTC ou à l'heure ajustée par le fuseau horaire standard pour l'hôte sur lequel il fonctionne?Que signifie time_t?

Et, plus important encore, pourquoi cela n'est-il pas documenté?

+1

Vous économiserez beaucoup d'efforts en stockant tous les temps comme UTC. Convertir en heure locale uniquement lorsque vous souhaitez l'afficher. –

+0

Ran le programme suivant sous windows: // timetest.cpp: Définit le point d'entrée pour l'application console. // #include "stdafx.h" int _tmain (int argc, _TCHAR * argv []) { \t time_t maintenant; \t temps (&now); \t printf ("secondes depuis l'époque% ld", maintenant), \t retour maintenant;. } et il est revenu un moment avec mon fuseau horaire défini comme l'est, je puis fermé Visual C++, changé mon fuseau horaire à Pacific, redémarré C++ et réexécuté le programme qui a renvoyé 50 secondes de plus qu'avant, combien de temps il m'a fallu pour exécuter le programme Ainsi, les bibliothèques VC++ sous windows semblent retourner UTC – Thom

+0

Bien sûr, Loki. Vous avez pensé que je ne faisais pas cela? – Thom

Répondre

5

UTC. localtime() et buddies carte à fuseau horaire local.

+0

Voir ma note sur le temps() ci-dessus sous windows. – Thom

1

Il contient le temps écoulé depuis l'époque, ajusté en fonction du fuseau horaire local

time_t time(time_t *tloc) -- returns the time since 00:00:00 GMT, Jan. 1, 1970, measured in seconds. 

[invalide]

La structure contient le temps écoulé depuis l'époque en secondes, jusqu'à 1000 millisecondes intervalle plus précis, le fuseau horaire local (mesuré en minutes de temps à l'ouest de Greenwich), et un drapeau qui, s'il est différent de zéro, indique que l'éclairage diurne s'applique localement pendant la partie appropriée de l'année.

[/ invalide]

+2

Je ne connais pas votre machine @KevinDTimm, mais sur la mienne c'est un typedef pour '__int64'. –

+0

Merde, désolé à ce sujet, ma réponse contient des informations de deux fonctions différentes, des corrections étant insérées ... – KevinDTimm

+1

vous confondez avec 'struct tm' –

2

time_t est la mise en œuvre définie selon la norme, dans VC++ c'est simplement un typedef pour __int64. La valeur est renvoyée par time(): meilleure approximation de l'implémentation par rapport à l'heure du calendrier en cours. La valeur (time_t) (-1) est renvoyée si l'heure du calendrier n'est pas disponible.