Решено: time.h (Помогите, плиз :))

Модератор: Модераторы разделов

fleisch
Сообщения: 40
ОС: OpenSuSE Linux 11.1

Решено: time.h

Сообщение fleisch »

Никак не могу понять, как мне получить просто-напросто текущее время в виде обычной строки?
Спасибо сказали:
skillergti
Сообщения: 34
ОС: slackware

Re: Решено: time.h

Сообщение skillergti »

char* ctime(const time_t*) в time.h
Спасибо сказали:
Аватара пользователя
drag0n
Сообщения: 156
Статус: Дракон-линуксоид
ОС: Slackware Linux

Re: Решено: time.h

Сообщение drag0n »

Как то так:

Код: Выделить всё

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>

int main () {
   time_t curr_time; //текущее время в секундах от начала эпохи
   struct tm * curr_time_tm; //время в исчислении более понятном для человека (см. [b]man localtime[/b] для подробностей)
   char * strtime; //строка с временем

   time(&curr_time); //получаем текущее время системы
   curr_time_tm = localtime(&curr_time); //преобразуем curr_time в curr_time_tm
   strtime = asctime(curr_time_tm); //преобразуем curr_time_tm в строку

   printf("%s\n", strtime);

  return 0;
}


Функции localtime и asctime возвращают указатели на статически выделенные переменные, поэтому беспокоиться о выделении под них памяти и ее освобождении не нужно.
После каталога /etc понимаешь, что реестр - место, откуда нормальными не возвращаются.
Спасибо сказали:
Аватара пользователя
Portnov
Модератор
Сообщения: 1786
Статус: Матёрый линуксоид
ОС: Debian testing/unstable

Re: Решено: time.h

Сообщение Portnov »

Есть еще такая функция strftime, позволяет получить время в любом нужном формате.
Работа: Ubuntu 9.10
Дом: Debian testing/unstable и на всякий случай winxp в virtualbox.
Для разнообразия: моя домашняя страница -http://iportnov.ru
Спасибо сказали:
fleisch
Сообщения: 40
ОС: OpenSuSE Linux 11.1

Re: Решено: time.h

Сообщение fleisch »

Всем огромное спасибо :)
Спасибо сказали:
MiK13
Сообщения: 1292
ОС: Linux Debian

Re: Решено: time.h

Сообщение MiK13 »

Portnov писал(а):
19.09.2008 10:08
Есть еще такая функция strftime, позволяет получить время в любом нужном формате.

Хорорая функция, жаль, что раньше не знал, Но не понятны два момента:
1. зачем в ней нужен 2-й параметр size_t max? Ведь, если ей передаётся указатель на строку, то это же дело программиста -- заботиться о том, чтобы все знаки заданного им формата поместились в эту строку.
2. Для чего функция возвращает число преобразованных знаков? Почему не указатель на строку, в котороую она поместила время в текстовом виде?

P.S. Сначала подумал, что это учтено в strptime, но, почитав, понял, что эта функция наоборот -- преобразует по формату время из текстового вида в struct tm.
Спасибо сказали:
MiK13
Сообщения: 1292
ОС: Linux Debian

Re: Решено: time.h

Сообщение MiK13 »

drag0n писал(а):
18.09.2008 23:19
Функции localtime и asctime возвращают указатели на статически выделенные переменные, поэтому беспокоиться о выделении под них памяти и ее освобождении не нужно.

Побочный эффект -- эти функции не являются реентерабельными. Поэтому добавлены аналогичные функции, к имени которых добавено _r (в Watcom имена немного другие) -- в них результат помещается в переменную вызывающей программы.
Спасибо сказали: