Provided by: manpages-pl-dev_4.26.0-1_all 

NAZWA
getdate, getdate_r - dzieli 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.
Gdy nie podano godziny, minuty ani sekundy, brana jest bieżąca godzina, minuta i sekunda.
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).
┌─────────────┬────────────────────────┬────────────────────────────────────────────────────────────────┐
│ Interfejs │ Atrybut │ Wartość │
├─────────────┼────────────────────────┼────────────────────────────────────────────────────────────────┤
│ getdate() │ Bezpieczeństwo wątkowe │ MT-niebezpieczne race:getdate env locale │
├─────────────┼────────────────────────┼────────────────────────────────────────────────────────────────┤
│ getdate_r() │ Bezpieczeństwo wątkowe │ MT-bezpieczne env locale │
└─────────────┴────────────────────────┴────────────────────────────────────────────────────────────────┘
WERSJE
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ń.
STANDARDY
POSIX.1-2008.
HISTORIA
POSIX.1-2001.
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 # Pełna nazwa dnia tygodnia
$ echo '%T' >> $TFILE # Czas (GG:MM:SS)
$ echo '%F' >> $TFILE # Data ISO (RRRR-MM-DD)
$ date
$ export DATEMSK=$TFILE
$ ./a.out Tuesday '2009-12-28' '12:22:33'
Sun Sep 7 06:03:36 CEST 2008
Wywołanie 1 ("Tuesday") powiodło się:
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
Wywołanie 2 ("2009-12-28") powiodło się:
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
Wywołanie 3 ("12:22:33") powiodło się:
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("Wywołanie %zu nie powiodło się; getdate_err = %d\n",
j, getdate_err);
continue;
}
printf("Wywołanie %zu (\"%s\") powiodło się:\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>, Robert Luberda <robert@debian.org> i Michał Kułach <michal.kulach@gmail.com>
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.9.1 15 czerwca 2024 r. getdate(3)