QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1445|回复: 18

求高手:怎么得到当前的时区?

[复制链接]
发表于 2004-7-6 12:03:11 | 显示全部楼层 |阅读模式
用c写一程序,怎么得到当前的时区~~?
发表于 2004-7-6 13:10:17 | 显示全部楼层
char *s = getenv("TZ");
回复

使用道具 举报

 楼主| 发表于 2004-7-6 14:39:53 | 显示全部楼层
[quote:8e6cbdddbb="sagaeon"]char *s = getenv("TZ");[/quote]

  谢谢楼上的。可是好象不行哎~~结果为null  如果把TZ换成USER倒可以输出root来。
回复

使用道具 举报

 楼主| 发表于 2004-7-6 14:46:30 | 显示全部楼层
没有TZ 这个环境变量~~~
回复

使用道具 举报

发表于 2004-7-6 20:31:51 | 显示全部楼层
是,发现了。而且用gmtime与localtime得到的结果一样?不知这何
回复

使用道具 举报

 楼主| 发表于 2004-7-7 10:31:32 | 显示全部楼层
gmtime 是目前时间,localtime是本地时间~~
回复

使用道具 举报

发表于 2004-7-7 10:47:13 | 显示全部楼层
当前与本地怎么区别啊?
回复

使用道具 举报

 楼主| 发表于 2004-7-7 13:54:33 | 显示全部楼层
目前时间,就是UTC时间,也就是格林威知时间~~
本地时间,就是你所在时区的时间~~   


可是 我不知道怎么用什么程序方法可以得到所在的时区。比如,我们现在所处的是Asia/Shanghai
回复

使用道具 举报

发表于 2004-7-7 19:37:30 | 显示全部楼层
[quote:7e149860cf="wsteed"]目前时间,就是UTC时间,也就是格林威知时间~~
本地时间,就是你所在时区的时间~~   


可是 我不知道怎么用什么程序方法可以得到所在的时区。比如,我们现在所处的是Asia/Shanghai[/quote]那么两者应该不一样才对吧?
回复

使用道具 举报

 楼主| 发表于 2004-7-8 09:16:48 | 显示全部楼层
[quote:e35ef341ce="sagaeon"][quote:e35ef341ce="wsteed"]目前时间,就是UTC时间,也就是格林威知时间~~
本地时间,就是你所在时区的时间~~   


可是 我不知道怎么用什么程序方法可以得到所在的时区。比如,我们现在所处的是Asia/Shanghai[/quote]那么两者应该不一样才对吧?[/quote]


两者得到得时间是不一样~
回复

使用道具 举报

发表于 2004-7-8 10:33:35 | 显示全部楼层
[quote:8768a1f42c="sagaeon"]是,发现了。而且用gmtime与localtime得到的结果一样?不知这何[/quote][code:1]#include <stdlib.h>
#include <stdio.h>
#include <time.h>
int main()
{
  char *s;
  s = getenv("TZ");
  printf("%s\n",s);

  struct tm *tm_ptr1,*tm_ptr2;
  time_t the_time;
  time(&the_time);

  tm_ptr1 = gmtime(&the_time);
  tm_ptr2 = localtime(&the_time);
  
  printf("%s\n",asctime(tm_ptr1));
  printf("%s\n",asctime(tm_ptr2));
  
  
  return 0;
}
[/code:1]得出的结果一样?
回复

使用道具 举报

 楼主| 发表于 2004-7-8 11:48:39 | 显示全部楼层
我的代码:
[code:1]
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

/* Pacific Standard Time & Daylight Savings */
char *tzstr = "TZ";

int main(void)
{
        time_t t;
        struct tm *gmt, *area;
        char *name;

//      putenv(tzstr);

//      tzset();
//      name=getenv("TZ");
//      printf("timezone=%s\n",tzname[1]);

        t = time(NULL);
        area = localtime(&t);
        printf("Local time is: %s", asctime(area));
        gmt = gmtime(&t);
        printf("GMT is: %s", asctime(gmt));

        return 0;
}
[/code:1]



另:你有即使联系方法吗?比如:qq??我的:747857   详谈,可以么?
回复

使用道具 举报

发表于 2004-7-8 12:37:29 | 显示全部楼层
在教研室用qq会被赶出去 :-(  :-( 。这儿就不错啊,而且还有其它更厉害的版猪 及一些常来的大虾,这样能解决的问题更多。 :-)  :-)
回复

使用道具 举报

 楼主| 发表于 2004-7-8 13:20:18 | 显示全部楼层
看到我的代码了吗~?结果是不一样啊~你的代码结果是一样~~到底是怎么回事呢~?
回复

使用道具 举报

发表于 2004-7-8 13:36:18 | 显示全部楼层
试了,造成不一样的原因是打印与调用gmtime, localtime的顺序(这也是我们程序的唯一实质区别)。不知为何?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-7 15:32 , Processed in 0.043660 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表