Привет всем
Вопрос такой - как в с++ под Linux &FreeBSD работать со временем.
Смотрел гугл, но он ничего не подсказал, смотрел всякие time.h на своем linux'е но так как в с++ слаб то ответа не нашел.В книге что у меня по с++ так же этого нет :(Все что нужно - получение в переменные:
год,
месяц,
день,
час,
минута.Причем текущие значения...
>[оверквотинг удален]
>
>
>Все что нужно - получение в переменные:
>год,
>месяц,
>день,
>час,
>минута.
>
>Причем текущие значения...Вообще-то, RTFM ;)
man 3 time
man 3 localtime
man 3 gmtimeА в частности: time() возврашает количецтво секунд с 1970-го года (в UTC), localtime()/gmtime() переводит их в формат структуры struct tm, в которой есть поля tm_sec, tm_hour, tm_mday, tm_mon, tm_year (localtime() переводит в локальной timezone, а gmtime() - в UTC).
А не затруднит пример?
Просто Я дуб-дубом...
#include <time.h>Пробую так
//31// tm* ttt;
//32// time_t* ttt1;
//34// ttt1=time(NULL);
//36// ttt=gmtime(time(ttt1));
./simple1.cpp: In function ‘int main(int, char**)’:
./simple1.cpp:34: error: invalid conversion from ‘time_t’ to ‘time_t*’
./simple1.cpp:36: error: invalid conversion from ‘time_t’ to ‘const time_t*’
./simple1.cpp:36: error: initializing argument 1 of ‘tm* gmtime(const time_t*)’Пробую так
//31// tm ttt;
//32// time_t ttt1;
//34// ttt1=time(NULL);
//36// ttt=gmtime(time(ttt1));
./simple1.cpp:36: error: invalid conversion from ‘time_t’ to ‘time_t*’
./simple1.cpp:36: error: initializing argument 1 of ‘time_t time(time_t*)’
./simple1.cpp:36: error: invalid conversion from ‘time_t’ to ‘const time_t*’
./simple1.cpp:36: error: initializing argument 1 of ‘tm* gmtime(const time_t*)’
./simple1.cpp:36: error: no match for ‘operator=’ in ‘ttt = gmtime(((const time_t*)time(((time_t*)ttt1))))’
/usr/include/time.h:135: note: candidates are: tm& tm::operator=(const tm&)
Нашел работающий пример#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int main(void)
{
time_t t;
struct tm *gmt,*area;
t = time(NULL);
area = localtime(&t);
printf("Локальное время:%s\n",asctime(area));
gmt = gmtime(&t);
printf("GMT:%s\n",asctime(gmt));
return 0;
}
Вот мой примерчик:[c0der@rock ~/c]$ cat times.c
#include <stdio.h>
#include <time.h>int main(void) {
struct tm *times;
time_t now;now = time(NULL);
times = localtime(&now);printf("На дворе:\n"
"Год: %d\n"
"Месяц: %d\n"
"День: %d\n"
"Час: %d\n"
"Минута: %d\n"
"Секунда: %d\n",
times->tm_year + 1900,
times->tm_mon + 1,
times->tm_mday,
times->tm_hour,
times->tm_min,
times->tm_sec);return 0;
}
[c0der@rock ~/c]$
[c0der@rock ~/c]$ ./times
На дворе:
Год: 2007
Месяц: 7
День: 27
Час: 15
Минута: 55
Секунда: 19
[c0der@rock ~/c]$
Спасибо!!!!
Если на С++, то я когда-то писал свой класс для работы с датами/временем. И где-то на этом форуме уже об этом сообщал. Если интересно, - могу выложить
>И где-то на этом форуме уже об этом сообщал. Если
>интересно, - могу выложитьЛишним, знание не бывает :)
Кидай
>>И где-то на этом форуме уже об этом сообщал. Если
>>интересно, - могу выложить
>
>Лишним, знание не бывает :)
>
>КидайКуда?
>>>И где-то на этом форуме уже об этом сообщал. Если
>>>интересно, - могу выложить
>>
>>Лишним, знание не бывает :)
>>
>>Кидай
>
>Куда?Сюда или на valeranew!!!@!!!ukr.net
Хорошее API есть в boost: http://boost.org/doc/html/date_time.html