首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

Linux下有什么函数可以批改时区

2012-06-24 
Linux下有什么函数可以修改时区最近公司的一个板子要销往国外,之前没接触过时区这块,现在遇到一个很尴尬的

Linux下有什么函数可以修改时区
最近公司的一个板子要销往国外,之前没接触过时区这块,现在遇到一个很尴尬的问题,就是用户修改好时区后,我不知道通过哪个函数去修改系统里的时区
我有试过直接获得GMT时间后,在time_t类型基础上加上时区*3600后打印的时间是对的,但是系统的时区还是0
请教各位,用什么方法来实现:

C/C++ code
#include <stdio.h>#include <time.h>int main(int argc, char **argv){        time_t now;        //struct tm *tmutc, *tmlocal;        struct tm utc_tm, local_tm;        /*获取日历时间*/        time(&now);        int tz = 0;        scanf("%d", &tz);        now += tz * 3600;#if 1        /*转换成tm时间*/        gmtime_r(&now, &utc_tm);        /*输出时间*/        printf("%s标准时间为:\t%s", utc_tm.tm_zone, asctime(&utc_tm));         printf("GMT: %ld\n", utc_tm.tm_gmtoff);#else        localtime_r(&now, &local_tm);        printf("%s时间为:\t%s", local_tm.tm_zone, asctime(&local_tm));#endif        return 0;}


编译后运行:
C/C++ code
[root@localhost demo]# ./a.out 8GMT标准时间为: Sun Jun 17 16:41:09 2012GMT: 0


输出的时间是对的,但是时区还是格林威治时间 0
时区应该是GMT+8才对

[解决办法]
探讨

我怎么记得是个文件来

/etc/sysconfig/clock

类似的

[解决办法]
settimeofday
[解决办法]
要想用localtime就要确定系统时间是当前UTC时间,系统时区也对应设置了,很简单,给你个链接配置一下就行了:

http://wenku.baidu.com/view/62a0f1d6b9f3f90f76c61ba6.html

看/etc/sysconfig/clock这个文件的配置方法。

热点排行