新足迹

 找回密码
 注册

精华好帖回顾

· 最全的上海迪士尼攻略 (2018-5-24) 兰兰姐 · 纯功课贴-自家草地,化妆刷具功课贴 (2012-5-24) bobo-ooo
· Shall We Dance? (2005-3-17) NT · 大股讨论 (2007-11-2) FLYBIRD
Advertisement
Advertisement
查看: 2044|回复: 2

C++:您遇到过类似的问题么? [复制链接]

发表于 2011-7-19 23:25 |显示全部楼层
此文章由 cppbug 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 cppbug 所有!转贴必须注明作者、出处和本声明,并保持内容完整
大概想了下,用C标准库,步骤大致如下:
1. 通过time()函数得到当前calendar time,然后通过gmtime和localtime函数获取GMT与本地的小时与分钟差:hh:mm。这里需要用前者减后者。
2. 定义一个struct tm 结构体 t,填入具体要转换的GMT时间。
3. 然后设定GMT 时区, putenv("TZ=GMT+0"); tzset();
4.通过mktime获取时间片timestamp:timestamp = mktime(&t);
5. 设定当前时区:putenv(“GMT+hh:mm”);tzset(); //hh:mm的值看第一步
6. 输出GMT时间与转换后时间:
printf("UTC  : %s", asctime(gmtime(&timestamp)));
                printf("Local: %s", asctime(localtime(&timestamp)));
Advertisement
Advertisement

发表于 2011-7-20 19:35 |显示全部楼层
此文章由 cppbug 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 cppbug 所有!转贴必须注明作者、出处和本声明,并保持内容完整
Lz说的os调用应该说的是指programmer直接调用系统api,比如win32 api。
这种是跨平台很困难,但是用c/c++标准库跨平台是没问题的

发表于 2011-7-21 16:22 |显示全部楼层
此文章由 cppbug 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 cppbug 所有!转贴必须注明作者、出处和本声明,并保持内容完整
lz说的这个问题的确没有非常简单的,用一条语句就能解决的方法,除了标准库以外,可以考虑用c++ boost
解决,这里有一些讨论:http://stackoverflow.com/questio ... sing-boostdate-time

评分

参与人数 1积分 +2 收起 理由
菜地一块 + 2 终于可以评分了,谢谢您的思考,一起进步!

查看全部评分

发表回复

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

本版积分规则

Advertisement
Advertisement
返回顶部