Осенью придумал программку для определения часового пояса:
#include <stdio.h>
#include <time.h>
int main (int argn, char *argv[]) {
int UTC;
time_t s_time, ctime1, ctime2;
struct tm * m_time;
s_time = time (NULL);
m_time = gmtime (&s_time);
ctime1 = mktime (m_time);
m_time = localtime (&s_time);
ctime2 = mktime (m_time);
UTC = (ctime2 - ctime1)/3600;
printf("UTC = %d\n", UTC);
return 0;
}
В системе менял часовой пояс и проверял, программа выдает верные результаты
sudo dpkg-reconfigure tzdata
Также позволяет определить часовой пояс в прошлом, например, если подставить вместо s_time = time (NULL);
s_time = 1410393600;
Получим часовой пояс до осеннего перевода часов.
Есть еще забавная функция
double difftime(time_t time2,time_t time1)
Во-первых, почему команда возвращает число в формате double? Когда результат всегда целое число =)
Во-вторых, в Windows данная функция не работает в MinGW.