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¶
Uwaga! To tłumaczenie może być nieaktualne!
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)
Powyższe tłumaczenie pochodzi z nieistniejącego już Projektu
Tłumaczenia Manuali i
może nie być aktualne. W razie
zauważenia różnic między powyższym opisem a
rzeczywistym zachowaniem opisywanego programu lub funkcji, prosimy o
zapoznanie się z oryginalną (angielską) wersją strony
podręcznika za pomocą polecenia:
- man --locale=C 3 ctime
Prosimy o pomoc w aktualizacji stron man - więcej informacji można
znaleźć pod adresem
http://sourceforge.net/projects/manpages-pl/.