Provided by: manpages-pl-dev_0.6-2_all bug

NAZWA

       asctime,  ctime,  gmtime,  localtime,  mktime, asctime_r, ctime_r, gmtime_r, localtime_r -
       konwersja daty i czasu do postaci czasu rozłożonego lub ASCII

SKŁADNIA

       #include <time.h>

       char *asctime(const struct tm *tm);
       char *asctime_r(const struct tm *tm, char *buf);

       char *ctime(const time_t *timep);
       char *ctime_r(const time_t *timep, char *buf);

       struct tm *gmtime(const time_t *timep);
       struct tm *gmtime_r(const time_t *timep, struct tm *result);

       struct tm *localtime(const time_t *timep);
       struct tm *localtime_r(const time_t *timep, struct tm *result);

       time_t mktime(struct tm *tm);

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

       asctime_r(), ctime_r(), gmtime_r(), localtime_r():
              _POSIX_C_SOURCE >= 1 || _XOPEN_SOURCE || _BSD_SOURCE || _SVID_SOURCE ||
              _POSIX_SOURCE

OPIS

       Funkcje  ctime(), gmtime() oraz localtime() przyjmują argument typu time_t, reprezentujący
       czas kalendarzowy. Zinterpretowany jako bezwzględna wartość czasu określa  liczbę  sekund,
       jakie upłynęły od początku epoki, to jest od 1970-01-01 00:00:00 +0000 (UTC).

       Funkcje  asctime()  oraz  mktime()  przyjmują  jako  argument  czas  rozłożony, który jest
       reprezentacją podzieloną na rok, miesiąc, dzień itd.

       Czas rozłożony jest przechowywany w strukturze tm, zdefiniowanej w <time.h> następująco:

           struct tm {
               int tm_sec;         /* sekundy (0-60) */
               int tm_min;         /* minuty (0-59) */
               int tm_hour;        /* godziny (0-23) */
               int tm_mday;        /* dzień miesiąca (1-31) */
               int tm_mon;         /* miesiąc (0-11) */
               int tm_year;        /* rok - 1900 */
               int tm_wday;        /* dzień tygodnia (0-6, niedziela = 0) */
               int tm_yday;        /* dzień roku (0-365, 1.01 = 0)*/
               int tm_isdst;       /* sezonowa zmiana czasu */
           };

       Elementy struktury tm to:

       tm_sec    Liczba sekund po pełnej minucie, normalnie z  zakresu  od  0  do  59,  ale  może
                 wynosić nawet do 60, aby umożliwić sekundy przestępne.

       tm_min    Liczba minut po pełnej godzinie, z zakresu od 0 do 59.

       tm_hour   Liczba godzin po północy, z zakresu od 0 do 23.

       tm_mday   Dzień tygodnia, z zakresu od 1 do 31.

       tm_mon    Liczba miesięcy od stycznia, z zakresu od 0 do 11.

       tm_year   Liczba lat od 1900.

       tm_wday   Liczba dni od niedzieli, z zakresu od 0 do 6.

       tm_yday   Liczba dni od 1 stycznia, z zakresu od 0 do 365.

       tm_isdst  Znacznik,  który  wskazuje, czy dla podanego czasu została przeprowadzona zmiana
                 czasu zimowy/letni. Jeśli wartość ta jest  dodatnia,  to  zmiana  czasu  została
                 przeprowadzona,  jeśli  wynosi  zero  -  zmiany nie przeprowadzono, a jeśli jest
                 ujemna - oznacza to, że informacja dotycząca zmiany czasu nie jest dostępna.

       Wywołanie ctime(t) jest równoważne asctime(localtime(t)). Przekształca czas kalendarzowy t
       na zakończony znakiem null łańcuch o postaci

              "śro sty 30 21:49:08 1993\n"

       Skróty  dni tygodnia to "nie", "pon", "wto", "śro", "czw", "pią" i "sob".  Skróty miesięcy
       to "sty", "lut", "mar", "kwi", "maj", "cze", "lip", "sie", "wrz", "paź",  "lis"  i  "gru".
       Zwracany  jest wskaźnik do statycznego łańcucha, który może zostać nadpisany przy kolejnym
       wywołaniu dowolnej funkcji daty i czasu. Funkcja zapisuje również  informacje  o  bieżącej
       strefie  czasowej  do zewnętrznych zmiennych tzname, timezone i daylight (patrz tzset(3)).
       Wielowątkowa wersja tej funkcji, ctime_r(), robi to samo, ale zapisuje łańcuch  w  podanym
       przez  użytkownika  buforze,  który powinien móc pomieścić co najmniej 26 znaków. Nie musi
       ona ustawiać zmiennych tzname, timezone, i daylight.

       Funkcja gmtime() przekształca czas  kalendarzowy  timep  na  czas  rozłożony,  wyrażony  w
       Coordinated  Universal  Time  (UTC).  Może  zwrócić  wartość  NULL, jeśli rok nie daje się
       zapisać jako liczba całkowita. Zwracany jest wskaźnik do statycznej  struktury,  która  to
       struktura  może  zostać  nadpisana  przy kolejnym wywołaniu dowolnej funkcji daty i czasu.
       Funkcja gmtime_r() robi to samo, ale zapisuje dane do struktury podanej przez użytkownika.

       Funkcja localtime() przekształca czas  kalendarzowy  timep  na  czas  rozłożony,  wyrażony
       względem  wybranej przez użytkownika strefy czasowej. Funkcja działa tak, jakby wywoływała
       tzset(3) i wpisywała do zewnętrznej zmiennej tzname informacje na  temat  bieżącej  strefy
       czasowej,  do  timezone  - różnicę w sekundach pomiędzy Coordinated Universal Time (UTC) a
       lokalnym czasem standardowym, a do daylight - wartość niezerową, jeśli przez  jakąś  część
       roku  obowiązuje inny czas niż podany (zimowy/letni). Zwracany jest wskaźnik do statycznej
       struktury, która może zostać nadpisana przy kolejnym wywołaniu  dowolnej  funkcji  daty  i
       czasu.  Funkcja  localtime_r()  robi to samo, ale zapisuje dane do struktury podanej przez
       użytkownika. Nie musi ona ustawiać zmiennych tzname, timezone i daylight.

       Funkcja asctime() przekształca czas rozłożony tm na zakończony bajtem  null  łańcuch  tego
       samego  formatu,  co  ctime().  Zwracany  jest  wskaźnik do statycznego łańcucha, który to
       łańcuch może zostać nadpisany przy kolejnym  wywołaniu  dowolnej  funkcji  daty  i  czasu.
       Funkcja asctime_r() robi to samo, ale zapisuje łańcuch w podanym przez użytkownika buforze
       o długości co najmniej 26 bajtów.

       Funkcja mktime()  przekształca strukturę czasu rozłożonego, wyrażoną w czasie lokalnym, na
       czas  kalendarzowy.  Funkcja ignoruje podane przez wywołującego wartości elementów tm_wday
       oraz tm_yday. Wartość podana w polu tm_isdst informuje funkcję mktime()  o  tym,  czy  dla
       czasu  podanego  w  strukturze tm używany był czas letni (DST - daylight saving time), czy
       też nie był używany: wartość dodatnia oznacza, że DST był używany,  zero - że nie  był,  a
       wartość  ujemna  nakazuje  funkcji mktime() podjęcie próby sprawdzenia (w systemowej bazie
       danych informacji o strefach czasowych), czy DST był używany w podanym czasie.

       Funkcja mktime() modyfikuje  pola  struktury  tm  jak  następuje:  tm_wday  i  tm_yday  są
       ustawiane na wartości określane na podstawie wartości innych pól. Jeśli elementy struktury
       mają wartości spoza zakresu wartości dopuszczalnych, to  zostaną  znormalizowane  (w  taki
       sposób,  że  np.  40  października  zostanie  zamieniony  na  9  listopada). tm_isdst jest
       ustawiane (niezależnie od jej początkowej wartości) na wartość  dodatnią  lub  na  0,  aby
       wskazać  -  odpowiednio  -  czy  w  podanym  czasie  DST  był  używany,  czy  też nie był.
       Uruchomienie funkcji mktime() ustawia także w zewnętrznej  zmiennej  tzname  informacje  o
       bieżącej strefie czasowej.

       Jeśli podany czas rozłożony nie może być reprezentowany jako czas kalendarzowy (sekundy od
       początku epoki),  mktime() zwraca (time_t) -1 i nie zmienia pól w  podzielonej  strukturze
       czasu.

WARTOŚĆ ZWRACANA

       Każda  z  tych funkcji zwraca opisaną powyżej wartość lub NULL (-1 w przypadku mktime()) w
       razie wystąpienia błędu.

ZGODNE Z

       POSIX.1-2001. C89 i C99 opisują asctime(), ctime(), gmtime(), localtime()  oraz  mktime().
       POSIX.1-2008  uznaje  asctime(),  asctime_r(),  ctime()  oraz  ctime_r()  za przestarzałe,
       rekomendując używanie strftime(3) zamiast nich.

UWAGI

       Następujące cztery funkcje acstime(), ctime(), gmtime() i localtime() zwracają wskaźnik do
       statycznych danych i w związku z tym nie są przystosowane do wielowątkowości. Wielowątkowe
       wersje acstime_r(), ctime_r(), gmtime_r() i localtime_r() są wymienione w SUSv2.

       POSIX.1-2001 mówi: "Funkcje asctime(), ctime(), gmtime() oraz localtime() powinny  zwrócić
       wartości  w  jednym  z  dwóch statycznych obiektów: podzielonej strukturze czasu i tablicy
       znaków typu char. Wywołanie którejkolwiek  z  tych  funkcji  może  nadpisać  informacje  w
       którymkolwiek   z  obiektów  zwróconych  przez  inne  funkcje".  Może  się  to  zdarzyć  w
       implementacji zastosowanej w bibliotece glibc.

       Wiele implementacji,  włączając  glibc,  interpretuje  0  w  tm_mday  jako  ostatni  dzień
       poprzedniego miesiąca.

       Wersja struktury struct tm zawarta w glibc zawiera dodatkowe pola

              long tm_gmtoff;           /* Sekundy na wschód od UTC */
              const char *tm_zone;      /* Skrót strefy czasowej */

       zdefiniowane,   gdy   _BSD_SOURCE  jest  ustawione  przed  włączeniem  <time.h>.  Jest  to
       rozszerzenie BSD, obecne w 4.3BSD-Reno.

       Według POSIX.1-2004 localtime() musi się zachowywać tak, jakby tzset(3) było  wywołane,  w
       przypadku zaś localtime_r() nie ma takiego wymagania. W przenośnym kodzie tzset(3) powinno
       być wywołanie przed localtime_r().

ZOBACZ TAKŻE

       date(1),  gettimeofday(2),  time(2),   utime(2),   clock(3),   difftime(3),   strftime(3),
       strptime(3), timegm(3), tzset(3), time(7)

O STRONIE

       Angielska  wersja  tej  strony  pochodzi  z  wydania  3.71  projektu Linux man-pages. Opis
       projektu, informacje dotyczące zgłaszania błędów, oraz najnowszą  wersję  oryginału  można
       znaleźć pod adresem http://www.kernel.org/doc/man-pages/.

TŁUMACZENIE

       Autorami  polskiego  tłumaczenia  niniejszej  strony podręcznika man są: Adam Byrtek (PTM)
       <abyrtek@priv.onet.pl>, Andrzej Krzysztofowicz (PTM) <ankry@mif.pg.gda.pl>, Robert Luberda
       <robert@debian.org> i Michał Kułach <michal.kulach@gmail.com>.

       Polskie  tłumaczenie jest częścią projektu manpages-pl; uwagi, pomoc, zgłaszanie błędów na
       stronie  http://sourceforge.net/projects/manpages-pl/.  Jest   zgodne   z   wersją    3.71
       oryginału.

                                            2014-08-19                                   CTIME(3)