Недавно я обнаружил странное поведение на языке Си, но понятия не имею, почему это происходит.
, когда я использую setenv (), установите TZ на GMT + 1 .вывод местного времени будет на один час меньше , чем время UTC.(см. вывод)
на самом деле, когда я устанавливаю TZ на GMT-1 .вывод местного времени будет на один час больше , чем время UTC.
Это не имеет смысла.И если вы не верите, вы можете попробовать приведенный ниже код на C. Кто-нибудь знает это странное поведение?это ошибка?
Код:
int main(int argc, char** argv)
{
time_t now;
struct tm *local;
setenv("TZ", "GMT+1", 1);
tzset();
now = time(NULL);
//Get the Local time (GMT+1)
local = localtime(&now);
printf("Local time and date: %s\n", asctime(local));
//Get the system time (GMT)
local = gmtime(&now);
printf("UTC time and date: %s\n", asctime(local));
return 0;
}
Выход:
Local time and date: Thu Aug 4 14:36:42 2011
UTC time and date: Thu Aug 4 15:36:42 2011