Man:Man3/ctime.3
Матеріал з docs.linux.org.ua — збірника документації з Unix/Linux українською мовою.
Назва
asctime, ctime, gmtime, localtime, mktime, asctime_r, ctime_r, gmtime_r, localtime_r - перетворює дату і час у доступну форму або ASCII
Огляд
#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);
Опис
Функції ctime(), gmtime() та localtime(), усі візьмуть як аргумент типу time_t, що відображає календарний час. Коли розглянуто як абсолютний час, цей аргумент дорівнює кількості секунд з 00:00:00 1-го Січня 1970-го року, Координованого Універсального Часу (UTC).
Функції asctime() і mktime(), обидві, візьмуть як аргумент час у людиночитаємому форматі, що являє собою числа, що відповідають рокові, місяцю, дню тощо.
Людиночитзємий формат зберігається у структурі tm, яку означено у заголовковому файлі <time.h>:
struct tm {
int tm_sec; /* секунди */
int tm_min; /* хвилини */
int tm_hour; /* години */
int tm_mday; /* день місяця */
int tm_mon; /* місяць */
int tm_year; /* рік */
int tm_wday; /* день тижня */
int tm_yday; /* день року */
int tm_isdst; /* літній час */
};
Членами структури tm являються:
- tm_sec
- Число секунд, які пройшли після виповнення хвилини, зазвичай у діапазоні 0 до 59, але може бути до 61, щоб дозволити перехідні секунди.
- tm_min
- Число хвилин, які пройшли після виповнення години, у діапазоні 0 і 59.
- tm_hour
- Число годин, після півночі, у діапазоні 0 до 23.
- tm_mday
- День місяця, у діапазоні 1 до 31.
- tm_mon
- Кількість місяців, починаючи з Січня, в діапазоні 0 до 11.
- tm_year
- Кількість років, починаючи з 1900.
- tm_wday
- Кількість днів, починаючи з неділі.
- tm_yday
- Кількість днів, починаючи з 1-го Січня, в діапазоні 0 до 365.
- tm_isdst
- Прапорець, що вказує, чи діє літній час. Значення є додатковим, якщо так, нуль, якщо ні і від'ємне, якщо ця інформація недоступна.
Виклик ctime(t) еквівалентний asctime(localtime(t)). Він перетворює календарний час t у ланцюжок, що має форму
"Wed Jun 30 21:49:08 1993\n"
Використовуються наступні скорочення назв днів тижня: `Sun', `Mon', `Tue', `Wed', `Thu', `Fri' та `Sat'. Місяців: `Jan', `Feb', `Mar', `Apr', `May', `Jun', `Jul', `Aug', `Sep', `Oct', `Nov' і `Dec'. Для місяців - `Jan', `Feb', `Mar', `Apr', `May', `Jun', `Jul', `Aug', `Sep', `Oct', `Nov' і `Dec'. Повернене значення є покажчиком на статично-виділений ланцюжок, який можна перезаписати послідовними викликами будь-яких функцій дати і часу. Ця функція також надасть значення зовнішній змінній tzname (дивіться tzset(3)), яке вказуватиме теперішній часовий пояс. Схожа версія функції, ctime_r(), здійснює те саме, але зберігає ланцюжок у наданий користувачем буфер довжиною, щонайменше, 26 знаків. Їй не потрібно встановлювати tzname.
Функція gmtime() обертає календарний час timep у розгорнуте представлення, виражене у Координованому Універсальному Часі (Coordinated Universal Time - UTC). Вона може повернути NULL, якщо рік не вміщається в ціле число. Повернене значення є покажчиком на статично-відведену структуру (дані типу struct), яку можна перезаписати наступними викликами будь-яких функцій дати або часу. Функція gmtime_r() діє так само, але зберігає дані в надану користувачем структуру (тип struct).
Функція localtime() обертає календарний час у розгорнуте представлення, відносне до вказаного користувачем часового поясу. Функція діє так, ніби вона викликала tzset(3) і встановлює зовнішні змінні tzname до значення поточноого часового поясу,

