Provided by: manpages-pl-dev_0.7-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
                  || /* Glibc w wersji <= 2.19: */ _BSD_SOURCE || _SVID_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.

ATRYBUTY

       Informacje   o   pojęciach   używanych   w  tym  rozdziale  można  znaleźć  w  podręczniku
       attributes(7).

       ┌───────────────┬────────────────────────┬─────────────────────────────────┐
       │InterfejsAtrybutWartość                         │
       ├───────────────┼────────────────────────┼─────────────────────────────────┤
       │asctime()      │ Bezpieczeństwo wątkowe │ MT-Unsafe race:asctime locale   │
       ├───────────────┼────────────────────────┼─────────────────────────────────┤
       │asctime_r()    │ Bezpieczeństwo wątkowe │ MT-Safe locale                  │
       ├───────────────┼────────────────────────┼─────────────────────────────────┤
       │ctime()        │ Bezpieczeństwo wątkowe │ MT-Unsafe race:tmbuf            │
       │               │                        │ race:asctime env locale         │
       ├───────────────┼────────────────────────┼─────────────────────────────────┤
       │ctime_r(),     │ Bezpieczeństwo wątkowe │ MT-Safe env locale              │
       │gmtime_r(),    │                        │                                 │
       │localtime_r(), │                        │                                 │
       │mktime()       │                        │                                 │
       ├───────────────┼────────────────────────┼─────────────────────────────────┤
       │gmtime(),      │ Bezpieczeństwo wątkowe │ MT-Unsafe race:tmbuf env locale │
       │localtime()    │                        │                                 │
       └───────────────┴────────────────────────┴─────────────────────────────────┘

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  4.07  projektu Linux man-pages. 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/.

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ą    4.07
       oryginału.

                                            2016-03-15                                   CTIME(3)