Provided by: manpages-pl-dev_4.21.0-2_all bug

NAZWA

       getdate, getdate_r - dzielą tekstową datę z czasem na osobne pola

BIBLIOTEKA

       Standardowa biblioteka C (libc, -lc)

SKŁADNIA

       #include <time.h>

       struct tm *getdate(const char *string);

       extern int getdate_err;

       int getdate_r(const char *restrict string, struct tm *restrict res);

   Wymagane ustawienia makr biblioteki glibc (patrz feature_test_macros(7)):

       getdate():
           _XOPEN_SOURCE >= 500

       getdate_r():
           _GNU_SOURCE

OPIS

       Funkcja  getdate()  przekształca  tekstową  reprezentację daty i czasu, przekazaną w buforze  wskazywanym
       przez string, na osobne pola zawierające  rozłożony  czas.  Ten  rozłożony  czas  jest   przechowywany  w
       strukturze  tm,  do  której  wskaźnik  jest  zwracany  jako wynik funkcji. Zwracana struktura tm może się
       znajdować w pamięci statycznej, wobec czego zostanie nadpisana przez kolejne wywołania funkcji getdate().

       W odróżnieniu od strptime(3)  (która  przyjmuje  argument  format),  getdate()  posługuje  się  formatami
       znajdującymi  się  w  pliku,  do  którego  pełna ścieżka jest podana w zmiennej środowiskowej DATEMSK. Do
       konwersji stosowana jest pierwsza z linii pliku, która pasuje do zadanego łańcucha.

       Podczas dopasowywania ignorowana jest wielkość liter.  Ignorowane  są  również  nadmiarowe  białe  znaki,
       zarówno we wzorcu, jak i w przekształcanym łańcuchu.

       Specyfikacje  przekształceń,  które  mogą być zawarte we wzorcu są takie same, jak dla strptime(3). Jedna
       dodatkowa specyfikacja przekształcenia jest opisana w standardzie POSIX.1-2001:

       %Z     Nazwa strefy czasowej. Glibc tego nie implementuje.

       Gdy podano %Z, to struktura  zawierająca  rozłożony  czas  jest  inicjowana  wartościami  odpowiadającymi
       bieżącemu czasowi w podanej strefie czasowej. W przeciwnym przypadku, jest inicjowana jako rozłożony czas
       odpowiadający bieżącemu czasowi lokalnemu (tak jak w przypadku wywołania funkcji localtime(3)).

       Gdy  podany  jest  tylko  dzień tygodnia, brany jest pierwszy taki dzień przypadający w dniu bieżącym lub
       później.

       Gdy podany jest jedynie miesiąc (bez roku), brany jest pierwszy  taki  miesiąc  przypadający  w  miesiącu
       bieżącym lub po nim. Gdy nie podano dnia, brany jest pierwszy dzień miesiąca.

       When no hour, minute, and second are given, the current hour, minute, and second are taken.

       Gdy  nie  podano  daty,  ale znana jest godzina, brana jest pierwsza taka godzina przypadająca w bieżącej
       godzinie lub później.

       getdate_r() jest rozszerzeniem GNU. Jest to bezpieczna dla wątków wersja getdate(), która zamiast  używać
       globalnej  zmiennej  do  raportowania błędów oraz statycznego bufora na rozłożony czas, zwraca błędy jako
       wynik funkcji oraz zwraca rozłożony czas w zaalokowanej przez funkcję wywołującą  strukturze  wskazywanej
       przez argument res.

WARTOŚĆ ZWRACANA

       Po  pomyślnym  zakończeniu  getdate()  zwraca wskaźnik do struktury struct tm.  W przeciwnym razie zwraca
       NULL i ustawia zmienną globalną getdate_err na jeden z poniżej podanych numerów błędów. Zmiany errno  nie
       są określone.

       W  przypadku  powodzenia  getdate_r()  zwraca  zero. W przeciwnym wypadku zwraca jeden z poniżej podanych
       numerów błędów.

BŁĘDY

       Poniższe błędy są zwracane albo poprzez getdate_err (w przypadku getdate()), albo jako wynik  funkcji  (w
       przypadku getdate_r()):

       1   Zmienna środowiska DATEMSK nie jest zdefiniowana lub ma pustą wartość.

       2   Nie udało się otworzyć pliku wzorców określonego przez DATEMSK w trybie do odczytu.

       3   Nie udało się pobrać informacji o stanie.

       4   Plik wzorców nie jest zwykłym plikiem.

       5   Wystąpił błąd podczas odczytu pliku wzorców.

       6   Nie udało się przydzielić pamięci (brak dostępnej pamięci).

       7   Brak w pliku linii pasującej do podanych danych.

       8   Niewłaściwa specyfikacja wejściowa.

ŚRODOWISKO

       DATEMSK
              Plik zawierający wzorce formatów.

       TZ, LC_TIME
              Zmienne używane przez strptime(3).

ATRYBUTY

       Informacje o pojęciach używanych w tym rozdziale można znaleźć w podręczniku attributes(7).
       ┌─────────────┬────────────────────────┬────────────────────────────────────────────────────────────────┐
       │ InterfejsAtrybutWartość                                                        │
       ├─────────────┼────────────────────────┼────────────────────────────────────────────────────────────────┤
       │ getdate()   │ Bezpieczeństwo wątkowe │ MT-Unsafe race:getdate env locale                              │
       ├─────────────┼────────────────────────┼────────────────────────────────────────────────────────────────┤
       │ getdate_r() │ Bezpieczeństwo wątkowe │ MT-Safe env locale                                             │
       └─────────────┴────────────────────────┴────────────────────────────────────────────────────────────────┘

STANDARDY

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

UWAGI

       Standard  POSIX.1  dla strptime(3) zawiera specyfikacje przekształceń korzystające z modyfikatorów %E lub
       %O, podczas gdy takie specyfikacje nie zostały podane dla  getdate().  Implementacja  w  glibc  realizuje
       getdate()  za  pomocą  strptime(3),  więc  automatycznie  obie  funkcje  wspierają  te  same specyfikacje
       przekształceń.

PRZYKŁADY

       Poniższy program wywołuje getdate() dla każdego z argumentów linii poleceń i po każdym  takim   wywołaniu
       wyświetla wartości pól zwróconej struktury tm. Następująca sesja powłoki obrazuje działanie programu:

           $ 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

   Kod źródłowy programu

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

ZOBACZ TAKŻE

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

TŁUMACZENIE

       Autorami    polskiego    tłumaczenia   niniejszej   strony   podręcznika   są:   Andrzej   Krzysztofowicz
       <ankry@green.mf.pg.gda.pl> i Robert Luberda <robert@debian.org>

       Niniejsze tłumaczenie jest wolną dokumentacją. Bliższe informacje  o  warunkach  licencji  można  uzyskać
       zapoznając   się   z   GNU General Public License w wersji 3   lub  nowszej.  Nie  przyjmuje  się  ŻADNEJ
       ODPOWIEDZIALNOŚCI.

       Błędy w  tłumaczeniu  strony  podręcznika  prosimy  zgłaszać  na  adres  listy  dyskusyjnej  manpages-pl-
       list@lists.sourceforge.net.

Linux man-pages 6.03                            5 lutego 2023 r.                                      getdate(3)