Provided by: manpages-fr-dev_4.23.1-1_all bug

NOM

       getdate,  getdate_r  -  Conversion d'un temps sous forme de chaîne de caractè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()  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 :

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

       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.

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 modè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  correspondance  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                                  │
       └────────────┴──────────────────────┴─────────────────────────────────────────────────────┘

VERSIONS

       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, getdate() est implémentée avec strptime(3), si bien que les
       deux fonctions supportent exactement les mêmes conversions.

STANDARDS

       POSIX.1-2008.

HISTORIQUE

       POSIX.1-2001.

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("Échec de l'appel %zu ; getdate_err = %d\n",
                          j, getdate_err);
                   continue;
               }

               printf("Appel %zu (\"%s\") réussi :\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  Christophe  Blaess
       <https://www.blaess.fr/christophe/>,  Stéphan  Rafin  <stephan.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.coulon@wanadoo.fr>,   Julien    Cristau    <jcristau@debian.org>,    Thomas    Huriaux
       <thomas.huriaux@gmail.com>, Nicolas François <nicolas.francois@centraliens.net>, Florentin
       Duneau <fduneau@gmail.com>, Simon Paillard <simon.paillard@resel.enst-bretagne.fr>,  Denis
       Barbier  <barbier@debian.org>,  David  Prévot  <david@tilapin.org>  et  Jean-Pierre Giraud
       <jean-pierregiraud@neuf.fr>

       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⟩.