#include <time.h> struct tm *getdate(const char *string); extern int getdate_err; int getdate_r(const char *restrict string, struct tm *restrict res);
Exigences de macros de test de fonctionnalités pour la glibc (consulter feature_test_macros(7)) :
getdate() :
_XOPEN_SOURCE >= 500
getdate_r() :
_GNU_SOURCE
Contrairement à strptime(3), (qui a un argument format), getdate() utilise les formats présents dans le fichier dont le chemin d'accès complet est donné par la variable d'environnement DATEMSK. La première ligne du fichier qui peut être mise en correspondance avec la chaîne passée en paramètre est utilisée pour la conversion.
La correspondance n'est pas sensible à la casse. Les espaces superflus, qu'ils soient dans le motif ou dans la chaîne à convertir, sont ignorés.
Les paramètres de conversion qu'un motif peut contenir sont les mêmes que pour strptime(3). Un indicateur de conversion supplémentaire est spécifié dans POSIX.1-2001 :
Lorsque %Z est spécifié, la structure contenant le temps au format humain est initialisée avec le temps actuel du fuseaux horaire. Sinon, elle est initialisée sous forme humaine à l'heure locale (comme lors d'un appel à localtime(3)).
Lorsque seul le jour de la semaine est donné, le jour pris en compte sera le premier jour correspondant à partir d'aujourd'hui inclus.
Lorsque seul le mois est spécifié (et pas l'année), le mois pris en compte est le premier mois correspondant à partir du mois courant inclus. Si aucun jour n'est indiqué, le premier jour du mois est pris par défaut.
Lorsque les heures, minutes et secondes ne sont pas indiquées, l'heure courante (heures, minutes et secondes) est prise par défaut.
Si aucune date n'est indiquée, mais que l'on connaît l'heure, l'heure prise en compte sera la première occurrence de cette heure, à partir de l'heure courante incluse.
getdate_r est une extension GNU qui fournit une version réentrante de getdate. Au lieu d'utiliser une variable globale pour rapporter les erreurs et un tampon statique pour renvoyer le temps au format humain, elle renvoie les erreurs avec la valeur de retour de la fonction et le temps au format humain dans le tampon alloué par l'appelant pointé par res.
En cas de succès, getdate_r() renvoie 0. En cas d'erreur, elle renvoie l'un des codes d'erreur ci-dessous.
Interface | Attribut | Valeur |
getdate() | Sécurité des threads |
MT-Unsafe race:getdate env locale
|
getdate_r() | Sécurité des threads |
MT-Safe env locale
|
$ TFILE=$PWD/tfile
$ echo '%A' > $TFILE # Full name of the day of the week
$ echo '%T' >> $TFILE # Time (HH:MM:SS)
$ echo '%F' >> $TFILE # ISO date (YYYY-MM-DD)
$ date
$ export DATEMSK=$TFILE
$ ./a.out Tuesday '2009-12-28' '12:22:33'
Sun Sep 7 06:03:36 CEST 2008
Call 1 ("Tuesday") succeeded:
tm_sec = 36
tm_min = 3
tm_hour = 6
tm_mday = 9
tm_mon = 8
tm_year = 108
tm_wday = 2
tm_yday = 252
tm_isdst = 1
Call 2 ("2009-12-28") succeeded:
tm_sec = 36
tm_min = 3
tm_hour = 6
tm_mday = 28
tm_mon = 11
tm_year = 109
tm_wday = 1
tm_yday = 361
tm_isdst = 0
Call 3 ("12:22:33") succeeded:
tm_sec = 33
tm_min = 22
tm_hour = 12
tm_mday = 7
tm_mon = 8
tm_year = 108
tm_wday = 0
tm_yday = 250
tm_isdst = 1
int
main(int argc, char *argv[])
{
struct tm *tmp;
for (size_t j = 1; j < argc; j++) {
tmp = getdate(argv[j]);
if (tmp == NULL) {
printf("Call %zu failed; getdate_err = %d\n",
j, getdate_err);
continue;
}
printf("Call %zu (\"%s\") succeeded:\n", j, argv[j]);
printf(" tm_sec = %d\n", tmp->tm_sec);
printf(" tm_min = %d\n", tmp->tm_min);
printf(" tm_hour = %d\n", tmp->tm_hour);
printf(" tm_mday = %d\n", tmp->tm_mday);
printf(" tm_mon = %d\n", tmp->tm_mon);
printf(" tm_year = %d\n", tmp->tm_year);
printf(" tm_wday = %d\n", tmp->tm_wday);
printf(" tm_yday = %d\n", tmp->tm_yday);
printf(" tm_isdst = %d\n", tmp->tm_isdst);
}
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 à