#include <sys/time.h>
int gettimeofday(struct timeval *restrict tv,
struct timezone *_Nullable restrict tz);
int settimeofday(const struct timeval *tv,
const struct timezone *_Nullable tz);
Exigences de macros de test de fonctionnalités pour la glibc (consulter feature_test_macros(7)) :
settimeofday() :
Depuis la glibc 2.19 :
_DEFAULT_SOURCE
glibc 2.19 et antérieures :
_BSD_SOURCE
L'argument tv est une structure timeval (comme indiqué dans <sys/time.h>) :
struct timeval {
time_t tv_sec; /* secondes */
suseconds_t tv_usec; /* microsecondes */
};
et donne le nombre de secondes et microsecondes écoulées depuis l'epoch (consultez time(2)).
L'argument tz est une structure timezone :
struct timezone {
int tz_minuteswest; /* minutes à l'ouest de Greenwich */
int tz_dsttime; /* type de changement d’heure d’été */
};
Si tv ou tz est NULL, la structure correspondante n'est ni remplie ni renvoyée. (Cependant, des avertissements à la compilation seront émis si tv est NULL.)
L'utilisation de la structure timezone est obsolète ; le paramètre tz doit normalement être NULL. Consultez la section NOTES ci-dessous.
Sous Linux, il existe une sémantique particulière associée à l'appel système settimeofday() si durant la première invocation (après l’amorçage) il a un argument tz non NULL, l'argument tv est NULL et le champ tz_minuteswest est différent de zéro (dans ce cas, le champ tz_dsttime doit être nul). Dans ce cas, on suppose que l'horloge CMOS de la machine est configurée sur l'heure locale, et qu'on doit l'augmenter de cette valeur pour obtenir l'heure UTC. Bien entendu, il faut éviter autant que possible d'utiliser cette particularité.
Le noyau accepte NULL pour à la fois tv et tz. L'argument timezone est ignoré par glibc et musl et n'est pas passé depuis ou vers le noyau. Bionic d'Android passe l'argument timezone depuis ou vers le noyau, mais Android ne met pas à jour le fuseau horaire en se basant sur le fuseau horaire dans les Paramètres, ainsi le fuseau horaire du noyau est habituellement UTC.
Traditionnellement, les champs de la structure timeval étaient de type long.
Sur d'anciens systèmes, le champ tz_dsttime contient une constante symbolique (dont les valeurs sont fournies ci-dessous) qui indique quelle partie du changement d’heure d’été annuel est en cours. (Remarque : cette valeur est constante tout au long de l'année, elle n'indique pas réellement la valeur que cette heure d’été est en cours, elle sélectionne un algorithme). Les changements d’heure d’été (Daylight Saving Time - DST) sont définis comme suit :
DST_NONE /* pas sur DST */ DST_USA /* DST à l'américaine */ DST_AUST /* DST à l'australienne */ DST_WET /* DST d'Europe occidentale */ DST_MET /* DST d'Europe centrale */ DST_EET /* DST d'Europe de l'Est */ DST_CAN /* Canada */ DST_GB /* Grande-Bretagne et Irlande */ DST_RUM /* Roumanie */ DST_TUR /* Turquie */ DST_AUSTALT /* Style australien avec changement en 1986 */
Il est évident que la période de l’heure d’été en cours ne peut pas être uniquement fournie par un algorithme par pays. Ce décalage dépend de décisions politiques imprévisibles. Aussi, cette méthode de représentation des fuseaux horaires a été abandonnée.
Les macros opérant sur les structures timeval sont décrites dans timeradd(3).
Cette traduction est une documentation libre ; veuillez vous reporter à la GNU General Public License version 3 concernant les conditions de copie et de distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE.
Si vous découvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message à