ctime(3) Library Functions Manual ctime(3) NAZWA asctime, ctime, gmtime, localtime, mktime, asctime_r, ctime_r, gmtime_r, localtime_r - konwersja daty i czasu do postaci czasu rozlozonego lub ASCII BIBLIOTEKA Standardowa biblioteka C (libc, -lc) SKLADNIA #include char *asctime(const struct tm *tm); char *asctime_r(const struct tm *restrict tm, char buf[restrict 26]); char *ctime(const time_t *timep); char *ctime_r(const time_t *restrict timep, char buf[restrict 26]); struct tm *gmtime(const time_t *timep); struct tm *gmtime_r(const time_t *restrict timep, struct tm *restrict result); struct tm *localtime(const time_t *timep); struct tm *localtime_r(const time_t *restrict timep, struct tm *restrict 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() przyjmuja argument typu time_t, reprezentujacy czas kalendarzowy. Zinterpretowany jako bezwzgledna wartosc czasu okresla liczbe sekund, jakie uplynely od poczatku epoki, to jest od 1970-01-01 00:00:00 +0000 (UTC). Funkcje asctime() oraz mktime() przyjmuja jako argument czas rozlozony, ktory jest reprezentacja podzielona na rok, miesiac, dzien itd. Broken-down time is stored in the structure tm, described in tm(3type). Wywolanie ctime(t) jest rownowazne asctime(localtime(t)). Przeksztalca czas kalendarzowy t na zakonczony znakiem null lancuch o postaci "sro, sty 30 21:49:08 1993\n" Skroty dni tygodnia to "nie", "pon", "wto", "sro", "czw", "pia" i "sob". Skroty miesiecy to "sty", "lut", "mar", "kwi", "maj", "cze", "lip", "sie", "wrz", "paz", "lis" i "gru". Zwracany jest wskaznik do statycznego lancucha, ktory moze zostac nadpisany przy kolejnym wywolaniu dowolnej funkcji daty i czasu. Funkcja zapisuje rowniez informacje o biezacej strefie czasowej do zewnetrznych zmiennych tzname, timezone i daylight (patrz tzset(3)). Wielowatkowa wersja tej funkcji, ctime_r(), robi to samo, ale zapisuje lancuch w podanym przez uzytkownika buforze, ktory powinien moc pomiescic co najmniej 26 znakow. Nie musi ona ustawiac zmiennych tzname, timezone, i daylight. Funkcja gmtime() przeksztalca czas kalendarzowy timep na czas rozlozony, wyrazony w Coordinated Universal Time (UTC). Moze zwrocic wartosc NULL, jesli rok nie daje sie zapisac jako liczba calkowita. Zwracany jest wskaznik do statycznej struktury, ktora to struktura moze zostac nadpisana przy kolejnym wywolaniu dowolnej funkcji daty i czasu. Funkcja gmtime_r() robi to samo, ale zapisuje dane do struktury podanej przez uzytkownika. Funkcja localtime() przeksztalca czas kalendarzowy timep na czas rozlozony, wyrazony wzgledem wybranej przez uzytkownika strefy czasowej. Funkcja dziala tak, jakby wywolywala tzset(3) i wpisywala do zewnetrznej zmiennej tzname informacje na temat biezacej strefy czasowej, do timezone - roznice w sekundach pomiedzy Coordinated Universal Time (UTC) a lokalnym czasem standardowym, a do daylight - wartosc niezerowa, jesli przez jakas czesc roku obowiazuje inny czas niz podany (zimowy/letni). Zwracany jest wskaznik do statycznej struktury, ktora moze zostac nadpisana przy kolejnym wywolaniu dowolnej funkcji daty i czasu. Funkcja localtime_r() robi to samo, ale zapisuje dane do struktury podanej przez uzytkownika. Nie musi ona ustawiac zmiennych tzname, timezone i daylight. Funkcja asctime() przeksztalca czas rozlozony tm na zakonczony bajtem null lancuch tego samego formatu, co ctime(). Zwracany jest wskaznik do statycznego lancucha, ktory to lancuch moze zostac nadpisany przy kolejnym wywolaniu dowolnej funkcji daty i czasu. Funkcja asctime_r() robi to samo, ale zapisuje lancuch w podanym przez uzytkownika buforze o dlugosci co najmniej 26 bajtow. Funkcja mktime() przeksztalca strukture czasu rozlozonego, wyrazona w czasie lokalnym, na czas kalendarzowy. Funkcja ignoruje podane przez wywolujacego wartosci elementow tm_wday oraz tm_yday. Wartosc podana w polu tm_isdst informuje funkcje mktime() o tym, czy dla czasu podanego w strukturze tm uzywany byl czas letni (DST - daylight saving time), czy tez nie byl uzywany: wartosc dodatnia oznacza, ze DST byl uzywany, zero - ze nie byl, a wartosc ujemna nakazuje funkcji mktime() podjecie proby sprawdzenia (w systemowej bazie danych informacji o strefach czasowych), czy DST byl uzywany w podanym czasie. Funkcja mktime() modyfikuje pola struktury tm jak nastepuje: tm_wday i tm_yday sa ustawiane na wartosci okreslane na podstawie wartosci innych pol. Jesli elementy struktury maja wartosci spoza zakresu wartosci dopuszczalnych, to zostana znormalizowane (w taki sposob, ze np. 40 pazdziernika zostanie zamieniony na 9 listopada). tm_isdst jest ustawiane (niezaleznie od jej poczatkowej wartosci) na wartosc dodatnia lub na 0, aby wskazac - odpowiednio - czy w podanym czasie DST byl uzywany, czy tez nie byl. Uruchomienie funkcji mktime() ustawia takze w zewnetrznej zmiennej tzname informacje o biezacej strefie czasowej. Jesli podany czas rozlozony nie moze byc reprezentowany jako czas kalendarzowy (sekundy od poczatku epoki), mktime() zwraca (time_t) -1 i nie zmienia pol w podzielonej strukturze czasu. WARTOSC ZWRACANA gmtime() oraz localtime(), gdy sie zakoncza pomyslnie, zwracaja wskaznik do struct tm. gmtime_r() oraz localtime_r(), gdy sie zakoncza pomyslnie, zwracaja adres struktury wskazywanej przez result. asctime() oraz ctime(), gdy sie zakoncza pomyslnie, zwracaja wskaznik do lancucha znakow asctime_r() oraz ctime_r(), gdy sie zakoncza pomyslnie, zwracaja wskaznik do lancucha znakow, na ktory wskazuje argument buf. mktime, gdy zakonczy sie pomyslnie, zwraca czas kalendarzowy (w sekundach od poczatku epoki [tj. 1970-01-01 00:00:00 +0000 -przyp. tlum.]), wyrazony jako wartosc typu time_t On error, mktime() returns the value (time_t) -1. The remaining functions return NULL on error. On error, errno is set to indicate the error. BLEDY EOVERFLOW Wynik jest niereprezentowalny. ATRYBUTY Informacje o pojeciach uzywanych w tym rozdziale mozna znalezc w podreczniku attributes(7). +---------------+--------------------------+---------------------------+ |Interfejs | Atrybut | Wartosc | +---------------+--------------------------+---------------------------+ |asctime() | Bezpieczenstwo watkowe | MT-Unsafe race:asctime | | | | locale | +---------------+--------------------------+---------------------------+ |asctime_r() | Bezpieczenstwo watkowe | MT-bezpieczne locale | +---------------+--------------------------+---------------------------+ |ctime() | Bezpieczenstwo watkowe | MT-Unsafe race:tmbuf | | | | race:asctime env locale | +---------------+--------------------------+---------------------------+ |ctime_r(), | Bezpieczenstwo watkowe | MT-bezpieczne env locale | |gmtime_r(), | | | |localtime_r(), | | | |mktime() | | | +---------------+--------------------------+---------------------------+ |gmtime(), | Bezpieczenstwo watkowe | MT-Unsafe race:tmbuf env | |localtime() | | locale | +---------------+--------------------------+---------------------------+ WERSJE POSIX doesn't specify the parameters of ctime_r() to be restrict; that is specific to glibc. Wiele implementacji, wlaczajac glibc, interpretuje 0 w tm_mday jako ostatni dzien poprzedniego miesiaca. Wedlug POSIX.1-2001 localtime() musi sie zachowywac tak, jakby tzset(3) bylo wywolane, w przypadku zas localtime_r() nie ma takiego wymagania. W przenosnym kodzie tzset(3) powinno byc wywolanie przed localtime_r(). STANDARDY asctime() ctime() gmtime() localtime() mktime() C11, POSIX.1-2008. asctime_r() ctime_r() gmtime_r() localtime_r() POSIX.1-2008. HISTORIA gmtime() localtime() mktime() C89, POSIX.1-2001. asctime() ctime() C89, POSIX.1-2001. Marked obsolete in POSIX.1-2008 (recommending strftime(3)). gmtime_r() localtime_r() POSIX.1-2001. asctime_r() ctime_r() POSIX.1-2001. Marked obsolete in POSIX.1-2008 (recommending strftime(3)). UWAGI Nastepujace cztery funkcje acstime(), ctime(), gmtime() i localtime() zwracaja wskaznik do statycznych danych i w zwiazku z tym nie sa przystosowane do wielowatkowosci. Wielowatkowe wersje acstime_r(), ctime_r(), gmtime_r() i localtime_r() sa wymienione w SUSv2. POSIX.1-2001 mowi: "Funkcje asctime(), ctime(), gmtime() oraz localtime() powinny zwrocic wartosci w jednym z dwoch statycznych obiektow: podzielonej strukturze czasu i tablicy znakow typu char. Wywolanie ktorejkolwiek z tych funkcji moze nadpisac informacje w ktorymkolwiek z obiektow zwroconych przez inne funkcje". Moze sie to zdarzyc w implementacji zastosowanej w bibliotece glibc. ZOBACZ TAKZE date(1), gettimeofday(2), time(2), utime(2), clock(3), difftime(3), strftime(3), strptime(3), timegm(3), tzset(3), time(7) TLUMACZENIE Autorami polskiego tlumaczenia niniejszej strony podrecznika sa: Adam Byrtek , Andrzej Krzysztofowicz , Robert Luberda i Michal Kulach Niniejsze tlumaczenie jest wolna dokumentacja. Blizsze informacje o warunkach licencji mozna uzyskac zapoznajac sie z GNU General Public License w wersji 3 lub nowszej. Nie przyjmuje sie ZADNEJ ODPOWIEDZIALNOSCI. Bledy w tlumaczeniu strony podrecznika prosimy zglaszac na adres listy dyskusyjnej . Linux man-pages 6.06 31 pazdziernika 2023 r. ctime(3)