LINUX.ORG.RU

mktime и struct tm


0

0

Объясните пожалуста, что означает поле tm_isdst в структуре tm и на что оно влияет при использовании mktime.

Cмотрю в man и ничего не могу понять.

★★

Этот флаг показывает, в действительности ли "летнее" время учтено в этой структуре. Значение флага положительно, если "летнее" время учитывается, 0, если нет, и отрицательно, если информация недоступна.

sdr
()
Ответ на: комментарий от sdr

Мдя.... все равно не могу разобраться что мне делать.

Проблема следующая:
Мне нужно увеличить время на определенное число секунд.
Я делаю так:

struct tm t;
memset(&t,0,sizeof(t));
t.tm_year = year - 1900;
t.tm_mon = month - 1;
t.tm_mday = day;
t.tm_hour = hour;
t.tm_min  = min;
t.tm_sec = sec;
///t.tm_isdst = ???
time_t s = mktime(&t);
s += shift;
struct tm * t2 = localtime(&s);
year = t2->tm_year + 1900;
month = t2->tm_mon + 1;
day = t2->tm_mday;
hour = t2->tm_hour;
min = t2->tm_min;
sec = t2->tm_sec;

Какое значение мне надо присвоить t.tm_isdst, чтобы в результате этого
 кода исходное время просто сдвигалось на shift секунд, не зависимо от
 того какой месяц.

Эксперименты показали, что -1 дает нужный результат, но гугль сказал, 
что в этом случае все "implementation defined". А мне нужен 
кроссплатформенный  вариант, или хотя бы работал на всех *NIX 
одинаково.

Vinick ★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.