.\" -*- coding: UTF-8 -*-
.\" Copyright 2001 walter harms (walter.harms@informatik.uni-oldenburg.de)
.\" and Copyright 2008, Linux Foundation, written by Michael Kerrisk
.\"     <mtk.manpages@gmail.com>
.\"
.\" %%%LICENSE_START(VERBATIM)
.\" Permission is granted to make and distribute verbatim copies of this
.\" manual provided the copyright notice and this permission notice are
.\" preserved on all copies.
.\"
.\" Permission is granted to copy and distribute modified versions of this
.\" manual under the conditions for verbatim copying, provided that the
.\" entire resulting derived work is distributed under the terms of a
.\" permission notice identical to this one.
.\"
.\" Since the Linux kernel and libraries are constantly changing, this
.\" manual page may be incorrect or out-of-date.  The author(s) assume no
.\" responsibility for errors or omissions, or for damages resulting from
.\" the use of the information contained herein.  The author(s) may not
.\" have taken the same level of care in the production of this manual,
.\" which is licensed free of charge, as they might when working
.\" professionally.
.\"
.\" Formatted or processed versions of this manual, if unaccompanied by
.\" the source, must acknowledge the copyright and authors of this work.
.\" %%%LICENSE_END
.\"
.\" Modified, 2001-12-26, aeb
.\" 2008-09-07, mtk, Various rewrites; added an example program.
.\"
.\"*******************************************************************
.\"
.\" This file was generated with po4a. Translate the source file.
.\"
.\"*******************************************************************
.TH GETDATE 3 "1 listopada 2020 r." "" "Podręcznik programisty Linuksa"
.SH NAZWA
getdate, getdate_r \- dzielą tekstową datę z czasem na osobne pola
.SH SKŁADNIA
\fB#include <time.h>\fP
.PP
\fBstruct tm *getdate(const char *\fP\fIstring\fP\fB);\fP
.PP
\fBextern int getdate_err;\fP
.PP
\fB#include <time.h>\fP
.PP
\fBint getdate_r(const char *\fP\fIstring\fP\fB, struct tm *\fP\fIres\fP\fB);\fP
.PP
.RS -4
Wymagane ustawienia makr biblioteki glibc (patrz \fBfeature_test_macros\fP(7)):
.RE
.PP
\fBgetdate\fP():
.ad l
.RS 4
.\"    || _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED
_XOPEN_SOURCE\ >=\ 500
.RE
.br
\fBgetdate_r\fP():
.ad l
.RS 4
_GNU_SOURCE
.RE
.ad
.SH OPIS
Funkcja \fBgetdate\fP() przekształca tekstową reprezentację daty i czasu,
przekazaną w buforze  wskazywanym przez \fIstring\fP, na osobne pola
zawierające rozłożony czas. Ten rozłożony czas jest  przechowywany w
strukturze \fItm\fP, do której wskaźnik jest zwracany jako wynik
funkcji. Zwracana struktura \fItm\fP może się znajdować w pamięci statycznej,
wobec czego zostanie nadpisana przez kolejne wywołania funkcji \fBgetdate\fP().
.PP
W odróżnieniu od \fBstrptime\fP(3) (która przyjmuje argument \fIformat\fP),
\fBgetdate\fP() posługuje się formatami znajdującymi się w pliku, do którego
pełna ścieżka jest podana w zmiennej środowiskowej \fBDATEMSK\fP. Do konwersji
stosowana jest pierwsza z linii pliku, która pasuje do zadanego łańcucha.
.PP
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.
.PP
Specyfikacje przekształceń, które mogą być zawarte we wzorcu są takie same,
jak dla \fBstrptime\fP(3). Jedna dodatkowa specyfikacja przekształcenia jest
opisana w standardzie POSIX.1\-2001:
.TP 
\fB%Z\fP
.\" FIXME Is it (still) true that %Z is not supported in glibc?
.\" Looking at the glibc 2.21 source code, where the implementation uses
.\" strptime(), suggests that it might be supported.
Nazwa strefy czasowej. Glibc tego nie implementuje.
.PP
Gdy podano \fB%Z\fP, 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
\fBlocaltime\fP(3)).
.PP
Gdy podany jest tylko dzień tygodnia, brany jest pierwszy taki dzień
przypadający w dniu bieżącym lub później.
.PP
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.
.PP
Gdy nie podano godziny, minuty ani sekundy, brana jest bieżąca godzina,
minuta i sekunda.
.PP
Gdy nie podano daty, ale znana jest godzina, brana jest pierwsza taka
godzina przypadająca w bieżącej godzinie lub później.
.PP
\fBgetdate_r\fP() jest rozszerzeniem GNU. Jest to bezpieczna dla wątków wersja
\fBgetdate\fP(), 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 \fIres\fP.
.SH "WARTOŚĆ ZWRACANA"
Po pomyślnym zakończeniu \fBgetdate\fP() zwraca wskaźnik do struktury \fIstruct
tm\fP.  W przeciwnym razie zwraca NULL i ustawia zmienną globalną
\fBgetdate_err\fP na jeden z poniżej podanych numerów błędów. Zmiany \fIerrno\fP
nie są określone.
.PP
W przypadku powodzenia \fBgetdate_r\fP() zwraca zero. W przeciwnym wypadku
zwraca jeden z poniżej podanych numerów błędów.
.SH BŁĘDY
Poniższe błędy są zwracane albo poprzez \fIgetdate_err\fP (w przypadku
\fBgetdate\fP()), albo jako wynik funkcji (w przypadku \fBgetdate_r\fP()):
.TP  4n
\fB1\fP
Zmienna środowiska \fBDATEMSK\fP nie jest zdefiniowana lub ma pustą wartość.
.TP 
\fB2\fP
Nie udało się otworzyć pliku wzorców określonego przez \fBDATEMSK\fP w trybie
do odczytu.
.TP 
\fB3\fP
.\" stat()
Nie udało się pobrać informacji o stanie.
.TP 
\fB4\fP
Plik wzorców nie jest zwykłym plikiem.
.TP 
\fB5\fP
Wystąpił błąd podczas odczytu pliku wzorców.
.TP 
\fB6\fP
.\" Error 6 doesn't seem to occur in glibc
Nie udało się przydzielić pamięci (brak dostępnej pamięci).
.TP 
\fB7\fP
Brak w pliku linii pasującej do podanych danych.
.TP 
\fB8\fP
Niewłaściwa specyfikacja wejściowa.
.SH ŚRODOWISKO
.TP 
\fBDATEMSK\fP
Plik zawierający wzorce formatów.
.TP 
\fBTZ\fP, \fBLC_TIME\fP
Zmienne używane przez \fBstrptime\fP(3).
.SH ATRYBUTY
Informacje o pojęciach używanych w tym rozdziale można znaleźć w podręczniku
\fBattributes\fP(7).
.TS
allbox;
lb lb lb
l l l.
Interfejs	Atrybut	Wartość
T{
\fBgetdate\fP()
T}	Bezpieczeństwo wątkowe	MT\-Unsafe race:getdate env locale
T{
\fBgetdate_r\fP()
T}	Bezpieczeństwo wątkowe	MT\-Safe env locale
.TE
.SH "ZGODNE Z"
POSIX.1\-2001, POSIX.1\-2008.
.SH UWAGI
Standard POSIX.1 dla \fBstrptime\fP(3) zawiera specyfikacje przekształceń
korzystające z modyfikatorów \fB%E\fP lub \fB%O\fP, podczas gdy takie specyfikacje
nie zostały podane dla \fBgetdate\fP(). Implementacja w glibc realizuje
\fBgetdate\fP() za pomocą \fBstrptime\fP(3), więc automatycznie obie funkcje
wspierają te same specyfikacje przekształceń.
.SH PRZYKŁADY
Poniższy program wywołuje \fBgetdate\fP() dla każdego z argumentów linii
poleceń i po każdym takim  wywołaniu wyświetla wartości pól zwróconej
struktury \fItm\fP. Następująca sesja powłoki obrazuje działanie programu:
.PP
.in +4n
.EX
$\fB TFILE=$PWD/tfile\fP
$\fB echo \(aq%A\(aq > $TFILE \fP      # Pełna nazwa dnia tygodnia
$\fB echo \(aq%T\(aq >> $TFILE\fP      # Data w postaci ISO (RRRR\-MM\-DD)
$\fB echo \(aq%F\(aq >> $TFILE\fP      # Czas (HH:MM:SS)
$\fB date\fP
$\fB export DATEMSK=$TFILE\fP
$\fB ./a.out Tuesday \(aq2009\-12\-28\(aq \(aq12:22:33\(aq\fP
Sun Sep  7 06:03:36 CEST 2008
Wywołanie 1 ("Tuesday") zakończone pomyślnie:
    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") zakończone pomyślnie:
    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") zakończone pomyślni:
    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
.EE
.in
.SS "Kod źródłowy programu"
\&
.EX
#define _GNU_SOURCE
#include <time.h>
#include <stdio.h>
#include <stdlib.h>

int
main(int argc, char *argv[])
{
    struct tm *tmp;

    for (int j = 1; j < argc; j++) {
        tmp = getdate(argv[j]);

        if (tmp == NULL) {
            printf("Wywołanie %d zakończone błędem; getdate_err = %d\en",
                   j, getdate_err);
            continue;
        }

        printf("Wywołanie %d (\e"%s\e") zakończone pomyślnie:\en", j, argv[j]);
        printf("    tm_sec   = %d\en", tmp\->tm_sec);
        printf("    tm_min   = %d\en", tmp\->tm_min);
        printf("    tm_hour  = %d\en", tmp\->tm_hour);
        printf("    tm_mday  = %d\en", tmp\->tm_mday);
        printf("    tm_mon   = %d\en", tmp\->tm_mon);
        printf("    tm_year  = %d\en", tmp\->tm_year);
        printf("    tm_wday  = %d\en", tmp\->tm_wday);
        printf("    tm_yday  = %d\en", tmp\->tm_yday);
        printf("    tm_isdst = %d\en", tmp\->tm_isdst);
    }

    exit(EXIT_SUCCESS);
}
.EE
.SH "ZOBACZ TAKŻE"
\fBtime\fP(2), \fBlocaltime\fP(3), \fBsetlocale\fP(3), \fBstrftime\fP(3), \fBstrptime\fP(3)
.SH "O STRONIE"
Angielska wersja tej strony pochodzi z wydania 5.10 projektu Linux
\fIman\-pages\fP. Opis projektu, informacje dotyczące zgłaszania błędów oraz
najnowszą wersję oryginału można znaleźć pod adresem
\%https://www.kernel.org/doc/man\-pages/.

.SH 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
.UR https://www.gnu.org/licenses/gpl-3.0.html
GNU General Public License w wersji 3
.UE
lub nowszej. Nie przyjmuje się ŻADNEJ ODPOWIEDZIALNOŚCI.

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