Назва

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 до значення поточноого часового поясу,