Chinaunix首页 | 论坛 | 博客
  • 博客访问: 137255
  • 博文数量: 41
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 55
  • 用 户 组: 普通用户
  • 注册时间: 2015-08-04 14:29
文章分类
文章存档

2017年(2)

2016年(39)

我的朋友

分类: LINUX

2016-04-29 10:34:32

关于时区
环境变量TZ
(1)GTM与GMT
     这里需要特别注意GTM 和 GMT并不是同一个概念。
     GMT是 是Greenwich Mean Time 的缩写,及格林尼治时间。
    因此,我们平时邮件头中的GMT+08:00的意义是此时间是北京时间。
    
    GTM是一种时区表示方法,在这种时区表示方法中,东半球采用负数表示时区信息,西半球采用正数表示。
    如东八区的表示方法为 GTM-8。
    
(2)几个常用的时间函数 (ctime(), asctime(), gmtime(), localtime(), mktime())
     受时区影响的有ctime(),localtime(),mktime()。
     其中,
     char *ctime(const time_t *timep),返回timep参数的时间在所在时区下的时间。
     struct tm *localtime(const time_t *timep),返回timep参数的时间在所在时区下的时间。
     time_t mktime(struct tm *tm),返回tm参数的时间距离格林尼治时间1970年1月1日的秒数,注意该函数会先根据时区信息将tm转换成格林尼治时间,
     然后再计算转换后的时间距离1970.1.1的秒数。
    
     不受时区影响的函数有gmtime(),asctime()
     其中,
     struct tm *gmtime(const time_t *timep),不管当前时区是多少,该函数始终认为timep参数为格林尼治秒数,返回格林尼治时间。
     char *asctime(const struct tm *tm),该函数也始终认为tm参数的时间是格林尼治时间,返回字符串形式的格林尼治时间。
    
(3)关于以上你个函数的安全性
    char *asctime_r(const struct tm *tm, char *buf);
    char *ctime_r(const time_t *timep, char *buf);
    struct tm *gmtime_r(const time_t *timep, struct tm *result);
    struct tm *localtime_r(const time_t *timep, struct tm *result);
    官方建议用上面这几个函数替换先前的函数,原因是先前那几个函数都是返回函数内部存贮空间内存贮的值,当再次调用时,由于值发生了改变,导致先前的职业发生了改变。
阅读(1614) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~