上程序:

#include <cstdlib> #include <iostream> #include <time.h> #include <stdio.h> using namespace std; int main(int argc, char *argv[]) { time_t tNow =time(NULL); time_t tEnd = tNow + 1800; //注意下面两行的区别 struct tm* ptm = localtime(&tNow); struct tm* ptmEnd = localtime(&tEnd); char szTmp[50] = {0}; strftime(szTmp,50,"%H:%M:%S",ptm); char szEnd[50] = {0}; strftime(szEnd,50,"%H:%M:%S",ptmEnd); printf("%s /n",szTmp); printf("%s /n",szEnd); system("PAUSE"); return EXIT_SUCCESS; }

最后出来的结果是:

21:18:39

21:18:39

和最初想法不一致。

查阅localtime的文档,发现这段话:

This structure is statically allocated and shared by the functions gmtime and localtime. Each time either one of these functions is called the content of this structure is overwritten.

也就是说每次只能同时使用localtime()函数一次,要不就会被重写!

The localtime() function need not be reentrant. A function that is not required to be reentrant is not required to be thread-safe.

因此localtime()不是可重入的。同时libc里提供了一个可重入版的函数localtime_r();

Unlike localtime(), the reentrant version is not required to set tzname。

修改程序:

#include <cstdlib> #include <iostream> #include <time.h> #include <stdio.h> using namespace std; int main(int argc, char *argv[]) { time_t tNow =time(NULL); time_t tEnd = tNow + 1800; //在这里修改程序 //struct tm* ptm = localtime(&tNow); //struct tm* ptmEnd = localtime(&tEnd); struct tm ptm = { 0 }; struct tm ptmEnd = { 0 }; localtime_r(&tNow, &ptm); localtime_r(&tEnd, &ptmEnd); char szTmp[50] = {0}; strftime(szTmp,50,"%H:%M:%S",&ptm); char szEnd[50] = {0}; strftime(szEnd,50,"%H:%M:%S",&ptmEnd); printf("%s /n",szTmp); printf("%s /n",szEnd); system("PAUSE"); return EXIT_SUCCESS; }

最后出来的结果是:

10:29:06
10:59:06

localtime 和 localtime_r相关推荐

  1. localtime和localtime_r

    C:时间函数 localtime localtime_r localtime 和 localtime_r 的函数功能: converts the calendar time timep to brok ...

  2. localtime与localtime_r

    在写代码的时候,经常会用到读取系统时间的函数.很多人都会调用localtime函数来将时间转换本地时间,但是大家往往会忽略了一点,localtime函数不是线程安全的.如果在多线程里调用localti ...

  3. 二十 关于gmtime、gmtime_r、localtime、localtime_r

    测试环境:vmware 7 + Redhat5.5,系统时间使用UTC,时区为上海. 1.函数功能介绍 使用man gmtime或man localtime都可以的得到这几个函数的介绍.原型如下: s ...

  4. Linux下gmtime、gmtime_r、localtime、localtime_r函数详解

    函数功能介绍 使用man gmtime或man localtime都可以的得到这几个函数的介绍.原型如下: struct tm *gmtime(const time_t *timep); struct ...

  5. Linux时间函数time()、ctime()、ctime_r()、localtime()、localtime_r()、asctime()、strftime()的转换关系

    上面这个图就是它们所有函数的关系转换,比较清晰,不需要太多文字描述. 下面是它们的代码实现过程: #include<stdio.h> #include<unistd.h> #i ...

  6. Linux gmtime、gmtime_r、localtime、localtime_r介绍

    测试环境:vmware 7 + Redhat5.5,系统时间使用UTC,时区为上海. 1.函数功能介绍 使用man gmtime或man localtime都可以的得到这几个函数的介绍.原型如下: s ...

  7. localtime、localtime_s、localtime_r的使用

    (1).localtime用来获取系统时间,精度为秒 #include <stdio.h> #include <time.h>int main() {time_t time_s ...

  8. C:时间函数 localtime localtime_r

    C:时间函数 localtime localtime_r localtime 和 localtime_r 的函数功能: converts the calendar time timep to brok ...

  9. localtime死锁——多线程下fork子进程

    最近测试我们自己改进的redis,发现在做rdb时,子进程会一直hang住,gdb attach上,堆栈如下: (gdb) bt #0 0x0000003f6d4f805e in __lll_lock ...

最新文章

  1. sql连oracle链接服务器
  2. mysql 5.1默认缓存_mysql的innodb数据库引擎详解
  3. 深入理解Java注解Annotation之注解处理器
  4. python 只取年月日 字符串_Python的数据类型
  5. weblogic:local class incompatible: stream classdesc serialVersionUID
  6. 汇编语言快速入门学习笔记
  7. 外部编辑Infopath的表单模板(xsn)
  8. app启动页数秒加载 代码_干货 | App 自动化测试痛点(弹框及首页启动加载完成判断处理)
  9. Destroying the bus stations
  10. java压缩----使用ANT JDK压缩---只压缩选中目录的指定文件夹
  11. SAP成都研究院的小伙伴们庆祝公司再次获得2019年最佳雇主的场景
  12. Linq表达式和Lambda表达式用法对比
  13. P2P技术详解(三):P2P中的NAT穿越(打洞)方案详解(进阶分析篇)
  14. 小米集团本周再回购1920万港元股票
  15. tar ,cpio打包解压. shell脚本for,while,until循环. rpm包管理,select循环菜单,函数function,yum...
  16. 腾讯与老干妈达成和解;传苹果将停掉 MacBook Air 产品线;VS Code 1.47 发布| 极客头条...
  17. 车载语音最新黑科技 除了辨“音”还会识“相”
  18. 若非疯子怎会选择创业
  19. 二路归并排序Python实现-II
  20. 博士申请 | 南方科技大学丁克蜜老师课题组招收全奖博士/硕士研究生

热门文章

  1. Java实现旅游app_基于安卓Android平台的旅游系统APP的设计(Eclipse,MySQL)
  2. ppt在线转换成pdf
  3. 注释(单行注释、多行注释、文档注释)
  4. Android ScrollView、NestedScrollView、Horizo​​ntalScrollView 等
  5. linux 查看网络流量来源_linux中查看网卡流量六种方法
  6. Scaled-YOLOv4: Scaling Cross Stage Partial Network 论文翻译
  7. 浮动与display:inline-block
  8. 支付宝 微信后台不死的黑科技
  9. socket error 10054错误出现的原因以及解决办法,全网最全没有之一
  10. Github搜索开源项目过滤技巧