У меня проблема с получением времени UTC. С тестовым кодом я обнаружил, что и gmtime, и localtime возвращают один и тот же результат.
void testTimeLib()
{
struct tm utcTime, localTime;
time_t now;
char utcStr[80], localStr[80];
time(&now);
gmtime_r(&now, &utcTime);
localtime_r(&now, &localTime);
memset(utcStr, 0, sizeof(utcStr));
strftime(utcStr, sizeof(utcStr), "%Y-%m-%dT%H:%M:%S", &utcTime);
memset(localStr, 0, sizeof(localStr));
strftime(localStr, sizeof(localStr), "%Y-%m-%dT%H:%M:%S", &localTime);
printf("UTC Time\tutcTime <%s>\n", utcStr);
printf("Local Time\tlocalTime <%s>\n", localStr);
}
результат
-> testTimeLib
UTC Time utcTime <2014-12-19T10:57:33>
Local Time localTime <2014-12-19T10:57:33>
Проверив исходный код gmtime_r и localtime_r, я обнаружил, что __getZoneInfo, вызванный localtime_r, вернет 0, что означает, что часовой пояс равен 0, на самом деле часовой пояс должен быть GMT+8.
Итак, мой вопрос: как я могу установить системный часовой пояс?