#include <time.h>
Получаю текущее время time (time_t*);
Отдаю полученное значение gmtime - получить гринвичское время.
Это же значение отдаю localtime - получить локальное время.
Они получаются ОДИНАКОВЫЕ.
В то же время если выполнить в консоли команду date --utc и просто date - результаты разные.
Мне искать какую-то глупую ошибку в коде или такое может быть?
Спасибо.
time, gmtime, localtime (Как-то непонятно работает.)
Модератор: Модераторы разделов
-
KiWi
- Бывший модератор
- Сообщения: 2521
- Статус: статус, статус, статус
Re: time, gmtime, localtime
Код: Выделить всё
#include <time.h>
#include <stdio.h>
int main() {
time_t t;
struct tm *tmp;
char str[512];
time(&t);
tmp = localtime(&t);
strftime(str, sizeof(str), "%Y-%m-%d %H:%M:%S", tmp);
printf("%s\n", str);
tmp = gmtime(&t);
strftime(str, sizeof(str), "%Y-%m-%d %H:%M:%S", tmp);
printf("%s\n", str);
printf("%s\n", tzname[0]);
return 0;
}Try...
Интересна, вообщем, последняя строчка.
-
Zeus
- Сообщения: 694
Re: time, gmtime, localtime
Спасибо.
Разобрался.
Дело было вот в чём:
у меня в коде для возвращаемых ф-ями gmtime и localtime указателей было заведено две отдельных переменных.
Я сначала последовательными вызовами функций присваивал этим указателям значения, а потом начинал забирать данные.
В man'е написано, что функции возвращают указатель на статическую область памяти.
Но я не знал, что НА ОДНУ И ТУ ЖЕ!
Т.е. фактически я получал данные только последней вызванной функции.
Такое вот у меня состоялось личное открытие
Разобрался.
Дело было вот в чём:
у меня в коде для возвращаемых ф-ями gmtime и localtime указателей было заведено две отдельных переменных.
Я сначала последовательными вызовами функций присваивал этим указателям значения, а потом начинал забирать данные.
В man'е написано, что функции возвращают указатель на статическую область памяти.
Но я не знал, что НА ОДНУ И ТУ ЖЕ!
Т.е. фактически я получал данные только последней вызванной функции.
Такое вот у меня состоялось личное открытие