Windows, linux 系统时间时区设置与VxWorks系统略有不同,调用如下两个函数设置。
putenv("TZ=UTC-8"); /*东8时区*/
tzset();
等于右边的字符串的意义:(name_of_zone)(time_in_hours_from_UTC);name_of_zone不会影响时区的设置,time_in_hours_from_UTC才是设置时区的关键所在,time_in_hours_from_UTC设置为-8,即将时区设置为北京时间。
环境:eclipse,MinGW
代码:
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <time.h>
int main(void)
{
time_t td;
struct tm * ptime;
printf("set the time zone to UTC:\n");
putenv("TZ=UTC0");
tzset();
time(&td);
time(&td);
printf(" time(&td) = %d\n", (int)td);
printf(" UTC time = %d\n", (int)mktime(gmtime(&td)));
printf(" Local time = %d\n", (int)mktime(localtime(&td)));
printf(" UTC time = %s", asctime(gmtime(&td)));
printf(" Local time = %s", asctime(localtime(&td)));
printf("\n");
printf("set the time zone to beijin:\n");
putenv("TZ=UTC-8");
tzset();
time(&td);
printf(" UTC time = %d\n", (int)mktime(gmtime(&td)));
printf(" time(&td) = %d\n", (int)td);
printf(" Local time = %d\n", (int)mktime(localtime(&td)));
ptime = localtime(&td);
printf(" beijin sec time = %d", (int)mktime(ptime));
printf(" beijin time = %s", asctime(ptime));
printf(" %d,\t%d,\t%d,\t%d,\t%d,\t%d,\t%d,\t%d,\t%d\n",
ptime->tm_year, ptime->tm_yday, ptime->tm_mon+1, ptime->tm_mday, ptime->tm_wday,
ptime->tm_hour, ptime->tm_min, ptime->tm_sec, ptime->tm_isdst);
return 0;
}运行结果:
set the time zone to UTC:
time(&td) = 1406708634
UTC time = 1406708634
Local time = 1406708634
UTC time = Wed Jul 30 08:23:54 2014
Local time = Wed Jul 30 08:23:54 2014
set the time zone to beijin:
UTC time = 1406679834
time(&td) = 1406708634
Local time = 1406708634
beijin sec time = 1406708634 beijin time = Wed Jul 30 16:23:54 2014
114, 210, 7, 30, 3, 16, 23, 54, 0
本文通过示例展示了如何在Windows和Linux环境下使用C语言进行时区设置的方法,包括设置UTC时区及北京时区的过程,并展示了设置前后的时间转换效果。

2000

被折叠的 条评论
为什么被折叠?



