Provided by: manpages-pl-dev_4.18.1-1_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
       ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩  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⟩.