首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >localtime()的时间错误

localtime()的时间错误
EN

Stack Overflow用户
提问于 2012-11-30 19:17:15
回答 3查看 6.6K关注 0票数 2

在我的服务器上运行date会得到正确的时间。但是在C(++)中使用localtime(),我得到了错误的时间。

运行dateFr 30. Nov 12:15:36 CET 2012

使用localtime()Fr 30 Nov 2012 11:15:36 CET

这是怎么回事?

操作系统: Debian 5.0.10

下面是一些代码:

代码语言:javascript
复制
struct tm* today;
today = localtime(...);
strftime(timeBuffer,50,myConnection.getMetaData().getDateFormat().c_str(),today);
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-11-30 19:36:55

免责声明:这个答案是在添加任何提到strftime之前编写的,是对时间戳中1小时差异的直觉反应。现在回过头来看,这种1小时的差异可能不是由于DST (因为日期不在夏季),而是可能显示了UTC时间戳( UTC和CET之间的1小时差异)。

不幸的是,答案被接受了,所以我不能删除它。更不幸的是,这个问题在没有额外信息的情况下是无法回答的。

为了完全透明,将原始答案留在这里,但要知道,它并没有解决问题:

localtime返回的struct tm有一个tm_isdst字段,指示夏令时是否生效。在设置时间格式时,需要考虑该字段。

尝试使用asctime来格式化时间,例如。:

代码语言:javascript
复制
puts(asctime(today));
票数 2
EN

Stack Overflow用户

发布于 2012-11-30 19:55:25

你试过这个吗?:

代码语言:javascript
复制
 time_t rawtime;
 struct tm * today;

 time ( &rawtime );
 today= localtime ( &rawtime );
 puts(asctime (today));
票数 0
EN

Stack Overflow用户

发布于 2012-11-30 20:42:28

处理日期和时间非常容易出错,而且测试通常很糟糕。我总是推荐使用boost::date_time http://www.boost.org/doc/libs/1_52_0/doc/html/date_time.html

下面是一些很好的http://en.highscore.de/cpp/boost/datetime.html示例

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13644182

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档