ctime

Autres langues

Langue: pl

Autres versions - même langue

Version: 2001-12-13 (openSuse - 09/10/07)

Section: 3 (Bibliothèques de fonctions)

NAZWA

asctime, ctime, gmtime, localtime, mktime - 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);

OPIS

Funkcje ctime(), gmtime() oraz localtime() przyjmuj± argument typu time_t, reprezentuj±cy czas kalendarzowy. Zinterpretowany jako bezwzglêdna warto¶æ czasu, okre¶la on ilo¶æ sekund, jakie up³ynê³y od godziny 00:00:00 1 stycznia 1970 czasu Coordinated Universal Time (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 */

        int     tm_min;         /* minuty */

        int     tm_hour;        /* godziny */

        int     tm_mday;        /* dzieñ miesi±ca */

        int     tm_mon;         /* miesi±c */

        int     tm_year;        /* rok */

        int     tm_wday;        /* dzieñ tygodnia */

        int     tm_yday;        /* dzieñ roku */

        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 61, 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 ono czas kalendarzowy t na ³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 to ³añcuch mo¿e zostaæ nadpisany przy kolejnym wywo³aniu dowolnej funkcji daty i czasu. Funkcja zapisuje równie¿ informacje na temat aktualnej strefy czasowej do zewnêtrznej zmiennej tzname (patrz tzset(3)). Wielowej¶ciowa wersja tej funkcji, ctime_r(), robi to samo, ale zapisuje ³añcuch w podanym przez u¿ytkownika buforze o d³ugo¶ci co najmniej 26. Nie musi ona ustawiaæ tzname.

Funkcja gmtime() przekszta³ca czas kalendarzowy timep na czas roz³o¿ony, wyra¿ony w Coordinated Universal Time (UTC). Mo¿e ona 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. Nie musi ona ustawiaæ tzname.

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 aktualnej 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 to struktura 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æ tzname.

Funkcja asctime() przekszta³ca czas roz³o¿ony tm na ³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.

Funkcja mktime() przekszta³ca strukturê czasu roz³o¿onego, wyra¿on± w czasie lokalnym, na czas kalendarzowy. Funkcja ignoruje warto¶ci elementów tm_wday i tm_yday i oblicza je ponownie na podstawie innych informacji ze struktury czasu roz³o¿onego. Je¶li elementy struktury maj± warto¶ci spoza zakresu warto¶ci dopuszczalnych, to zostana znormalizowane (w taki sposób, ¿e np. 40 pa¼dziernika zostanie zamieniony na 9 listopada). Wywo³anie mktime() zapisuje równie¿ informacje na temat aktualnej strefy czasowej do zewnêtrznej zmiennej tzname. Je¶li podany czas roz³o¿ony nie mo¿e zostaæ przedstawiony jako czas kalendarzowy (liczba sekund od pocz±tku epoki), mktime() zwraca warto¶æ (time_t)(-1) i nie zmienia warto¶ci elementów tm_wday i tm_yday struktury czasu roz³o¿onego.

WARTO¦Æ ZWRACANA

Ka¿da z tych funkcji zwraca opisan± powy¿ej warto¶æ lub NULL (-1 w przypadku mktime()) w razie wyst±pienia b³êdu.

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 i dostêpne pocz±wszy od libc 5.2.5.

Wersja struktury tm zawarta w glibc posiada dodatkowe pola


long tm_gmtoff;           /* Sekundy na wschód od UTC */

const char *tm_tm_zone;   /* Skrót strefy czasowej */

zdefiniowane, gdy _BSD_SOURCE jest ustawione przed w³±czeniem <time.h>. Jest to rozszerzenie BSD, obecnie w 4.3BSD-Reno.

ZGODNE Z

SVID 3, POSIX, BSD 4.3, ISO 9899

ZOBACZ TAK¯E

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