Windows, linux 系统时间时区设置

本文通过示例展示了如何在Windows和Linux环境下使用C语言进行时区设置的方法,包括设置UTC时区及北京时区的过程,并展示了设置前后的时间转换效果。

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值