dwww Home | Manual pages | Find package

getdate(3)                 Library Functions Manual                 getdate(3)

NOM
       getdate,  getdate_r - Conversion d'un temps sous forme de chaîne de ca-
       ractères au format humain

BIBLIOTHÈQUE
       Bibliothèque C standard (libc, -lc)

SYNOPSIS
       #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

DESCRIPTION
       La  fonction  getdate()  convertit  une  date et un temps sous forme de
       chaîne de caractères, contenue dans le tampon string, au format humain.
       Le  temps  au  format humain est sauvegardé dans une structure tm et un
       pointeur vers cette structure est renvoyé. Cette structure est  allouée
       statiquement, elle sera donc écrasée lors d'un prochain appel.

       Contrairement à strptime(3), (qui a un argument format), getdate() uti-
       lise les formats présents dans le fichier dont le chemin  d'accès  com-
       plet  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  igno-
       ré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 :

       %Z     Nom du fuseaux horaire (non implémenté dans le glibc).

       Lorsque  %Z est spécifié, la structure contenant le temps au format hu-
       main 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  in-
       clus. 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 er-
       reurs  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.

VALEUR RENVOYÉE
       En cas de succès, getdate() renvoie  un  pointeur  vers  une  structure
       struct  tm.  Sinon  elle renvoie NULL et positionne la variable globale
       getdate_err avec l'un des codes d'erreur  ci-dessous.  La  modification
       éventuelle de errno est indéfinie.

       En  cas de succès, getdate_r() renvoie 0. En cas d'erreur, elle renvoie
       l'un des codes d'erreur ci-dessous.

ERREURS
       Les erreurs suivantes sont renvoyées par getdate_err  (pour  getdate())
       ou par le code de retour de la fonction (pour getdate_r()).

       1   La  variable  d'environnement  DATEMSK est non définie ou sa valeur
           est une chaîne vide.

       2   Le fichier de modèle spécifié par DATEMSK ne peut  être  ouvert  en
           lecture.

       3   Impossible de lire l'état du fichier.

       4   Le fichier de modèle n'est pas un fichier régulier.

       5   Une  erreur  est  survenue au cours de la lecture du fichier de mo-
           dèle.

       6   Échec d'allocation mémoire (pas assez de mémoire disponible).

       7   Il n'y a pas de ligne dans le fichier qui puisse être mise en  cor-
           respondance avec l'entrée.

       8   Paramètres d'entrée invalides.

ENVIRONNEMENT
       DATEMSK
              Fichier contenant les motifs de formatage.

       TZ, LC_TIME
              Variables utilisées par strptime(3).

ATTRIBUTS
       Pour  une explication des termes utilisés dans cette section, consulter
       attributes(7).

       ┌────────────┬──────────────────────┬──────────────────────────────────┐
       │InterfaceAttributValeur                           │
       ├────────────┼──────────────────────┼──────────────────────────────────┤
       │getdate()   │ Sécurité des threads │ MT-Unsafe race:getdate env       │
       │            │                      │ locale                           │
       ├────────────┼──────────────────────┼──────────────────────────────────┤
       │getdate_r() │ Sécurité des threads │ MT-Safe env locale               │
       └────────────┴──────────────────────┴──────────────────────────────────┘

STANDARDS
       POSIX.1-2001, POSIX.1-2008.

NOTES
       La  spécification  POSIX.1 pour strptime(3) contient des spécifications
       de conversion utilisant les modificateurs %E ou %O alors  que  de  tels
       modificateurs  ne sont pas indiqués pour getdate(). Dans la glibc, get-
       date() est implémentée avec strptime(3), si bien que les deux fonctions
       supportent exactement les mêmes conversions.

EXEMPLES
       Le  programme  ci-dessous  appelle getdate() pour chaque argument de la
       ligne de commande et affiche la valeur des champs de  la  structure  tm
       renvoyée.  La  session shell suivante montre des exemples d'utilisation
       de ce programme :

           $ 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

   Source du programme

       #define _GNU_SOURCE
       #include <stdio.h>
       #include <stdlib.h>
       #include <time.h>

       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);
           }

           exit(EXIT_SUCCESS);
       }

VOIR AUSSI
       time(2), localtime(3), setlocale(3), strftime(3), strptime(3)

TRADUCTION
       La traduction française de cette page de manuel a été créée par  Chris-
       tophe  Blaess  <https://www.blaess.fr/christophe/>, Stéphan Rafin <ste-
       phan.rafin@laposte.net>, Thierry Vignaud <tvignaud@mandriva.com>, Fran-
       çois  Micaux, Alain Portal <aportal@univ-montp2.fr>, Jean-Philippe Gué-
       rard <fevrier@tigreraye.org>, Jean-Luc  Coulon  (f5ibh)  <jean-luc.cou-
       lon@wanadoo.fr>,  Julien  Cristau <jcristau@debian.org>, Thomas Huriaux
       <thomas.huriaux@gmail.com>, Nicolas François  <nicolas.francois@centra-
       liens.net>,  Florentin  Duneau <fduneau@gmail.com>, Simon Paillard <si-
       mon.paillard@resel.enst-bretagne.fr>,   Denis   Barbier    <barbier@de-
       bian.org> et David Prévot <david@tilapin.org>

       Cette traduction est une documentation libre ; veuillez vous reporter à
       la       GNU       General       Public        License        version 3
       ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩  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 à ⟨debian-l10n-french@lists.debian.org⟩.

Pages du manuel de Linux 6.03   5 février 2023                      getdate(3)

Generated by dwww version 1.15 on Sat Jun 29 00:27:43 CEST 2024.