Deklaracja struct tm { int tm_sec; /* sekundy od pełnej minuty*/ int tm_min; /* minuty od pełnej godziny*/ int tm_hour; /* godzina na 24-godzinnym zegarze*/ int tm_mday; /* dzień miesiąca */ int tm_mon; /* miesiąc licząc od zera */ int tm_year; /* rok - 1900 */ int tm_wday; /* dzień tygodnia niedziela ma numer 0*/ int tm_yday; /* dzień roku licząc od zera*/ int tm_isdst; /* znacznik czasu letniego */

Plik nagłówkowy time.h

Opis Kolejne elementy struktury oznaczają: tm_sec Liczba sekund po pełnej minucie. Liczba z zakresu 0-59. W nadzwyczajnym przypadku (dodanie sekund w celu dostosowania czasu do czasu astronomicznego) może przyjmować wartość 60 albo nawet 61. tm_min Liczba minut po pełnej godzinie. Liczba z zakresu 0-59. tm_hour Godzina. Liczba godzin od północy. Liczba z zakresu 0-23. tm_mday Dzień miesiąca. Liczba z zakresu 1-31. tm_mon Liczba miesięcy, które upłynęły od początku roku. Liczba z zakresu 0-11. tm_year Liczba lat od roku 1900. tm_wday Numer dnia tygodnia, licząc od niedzieli, która ma numer 0. Liczba z zakresu 0-6. tm_yday Numer dnia w roku licząc od zera. Liczba z zakresu 0-365. tm_isdst Wartość wskazująca czy obowiązuje czas letni. Wartość dodatnia, gdy obowiązuje czas letni. Wartość zero, gdy obowiązuje czas standardowy. Wartość ujemna, gdy brak odpowiedniej informacji.

Wykorzystanie Struktury tm używają funkcje: mktime, asctime, gmtime, localtime, strftime.

Mogą jej używać też funkcje spoza biblioteki standardowej; przykładami takich funkcji są: asctime_r, gmtime_r, localtime_r, strptime.

Przykład użycia Poniższy program uruchomiony w dniu 28 grudnia roku (przestępnego) 2004 daje w wyniku napis: dziś jest 363 dzień roku miesiąc jest 12

#include #include

int main(void) { time_t liczba_sekund; struct tm strukt; time(&liczba_sekund); localtime_r(&liczba_sekund, &strukt); printf("dziś jest %d dzień roku\nmiesiąc jest %d\n", strukt.tm_yday+1, strukt.tm_mon+1); return 0;

Przykład 2 Poniższa linijka pokazuje warunki na sprawdzenie roku przestępnego:

if ( rok % 4 ==0 && rok % 100 != 0 || rok % 400 == 0) luty = 29; else luty = 28;

Przykład 3 Poniższa funkcja zwraca dzień tygodnia, dla zadanej daty: zamiast tm_wday

int dayofweek(int y, int m, int d) /* 0 = Niedziela */ { static int t[] = {0, 3, 2, 5, 0, 3, 5, 1, 4, 6, 2, 4}; y -= m < 3; return (y + y/4 - y/100 + y/400 + t[m-1] + d) % 7; }