mktime() дает разные результаты для одного и того же ввода в разных часовых поясах

Вот фрагмент кода для преобразования Fri Jan 1 00:00:00 IST 1970 в EPOCH

 memset(&Date_st,0,sizeof(struct tm));
 Date_st.tm_year = 70;
 Date_st.tm_mon  = 0;
 Date_st.tm_mday  = 1;
 Date_st.tm_hour = 24;
 Date_st.tm_min  = 0;
 Date_st.tm_sec  = 0;
 Date_st.tm_isdst = 0 ; 
 date_in_seconds = mktime( &Date_st );

Код работает на двух серверах с разными часовыми поясами.

Server_1!:user_1> Вт, 25 августа, 11:03:51 IDT 2015 г.

Server_2!:user_2> Вт, 25 августа, 05:05:03 CLT 2015 г.

Теперь код дает разные выходные данные на разных серверах для одного и того же ввода, который Fri Jan 1 00:00:00 IST 1970

Server_1 -> 79200
Server_2 -> 100800

Кто-нибудь может подсказать, почему выходные данные отличаются? и как его сделать таким же {хочу, чтобы он был таким же}?


person mik    schedule 25.08.2015    source источник
comment
Вместо Jan 1 00:00:00 1970 используйте Date_st.tm_hour = 0;, а не 24.   -  person chux - Reinstate Monica    schedule 24.08.2018


Ответы (1)


Вот что такое часовые пояса, местное время другое.

Вместо этого вы можете попробовать функцию gmtime, если вам нужна общая ссылка на время.

person Bo Persson    schedule 25.08.2015
comment
есть ли возможность такого поведения из-за некоторых env. вар. ? Я спрашиваю об этом, потому что все работало на одной и той же машине env {machine} - person mik; 25.08.2015