Я хочу построить struct tm
с Australia/Sydney
часовой пояс с, так что я первый использование:mktime неправильно для часового пояса Австралии?
setenv("TZ","Australia/Sydney",1);
tzset()
затем я установил struct tm
как:
struct tm _tm;
_tm.tm_sec = 0;
_tm.tm_min = 45;
_tm.tm_hour = 7;
_tm.tm_mday = 18;
_tm.tm_mon = 8;
_tm.tm_year = 114;
Это должно установить в Австралию время 2014/09/18 7 : 45: 00 тогда я называю:
time_t other_tm = mktime(&_tm);
После этого вызова и other_tm
и _tm
указали на 6:45 утра по Австралии! Причина в том, что у other_tm есть значение 1410986700, которое вы можете проверить из Epoc-конвертера, которое действительно указано в 6:45 утра, у кого-нибудь есть идея, почему?
Дайте это посмотреть на преобразования UTC: http://stackoverflow.com/a/3661129/3895252 –
http://stackoverflow.com/questions/10533322/mktime-and-tm-isdst-flag –
setenv и tzset служат для использования правильного часового пояса, так что mktime может использовать текущий локальный часовой пояс. Но это, похоже, не сработало. – user2426361