有关时间函数localtime和gmtime

 

今天在做一个小程序,需要比较一下本地时间和格林尼治时间,本地时间用localtime获取,格林尼治时间用gmtime获取,可比较结果竟然是两个时间相同,查找半天没有头绪,上网查询,得到结果让人赧颜,因为localtime和gmtime的返回结果都是放在STL静态区的,调用下一个函数会把上一次调用的结果覆盖掉,所以到用的时候两个时间就一样了,都是后来调用的那个函数的返回值。知道原因就好办了,首先在定义tm时由原来的定义为指针改为定义为变量,而在localtime和gmtime的返回值前加上取值符(*),这样就变为变量值的复制而不是传地址了。具体如下面代码:

这是原来出错代码 

time_t tNow;
 struct tm *tmlocal;
 struct tm *tmGmt;

 time(&tNow);
 tmlocal = localtime(&tNow);
 tmGmt = gmtime(&tNow);

这是改正后代码

 time_t tNow;
 struct tm tmlocal;
 struct tm tmGmt;

 time(&tNow);
 tmlocal = *localtime(&tNow);
 tmGmt = *gmtime(&tNow);

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值