首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何将ISO8601解析为time_t?

如何将ISO8601解析为time_t?
EN

Stack Overflow用户
提问于 2019-06-11 00:09:58
回答 2查看 68关注 0票数 2

将ISO8601 datetimes解析为time_t的正确方法是什么?

输入字符串是ISO8601日期时间的特定变体:

1991-02-03T04:05:06.000-07:00

(我不需要担心'Z‘或隐含的本地时间变体)

我可以使用strptime()解析到几分之一秒,但是手册页提到了setlocale(),所以我担心我需要对此做些什么。Do I?还是只用于月份和日期之类的名称?

似乎没有任何方法可以跳过(或处理) strptime中的小数秒,而且我的版本似乎也不支持'%z‘(而且tm_gmtoff是非标准的),所以我不得不’手动‘解析输入的小数秒和时区偏移。很简单。

所以我假设我可以用TZ偏移量的分钟数修改从strptime获得的tm_min正确吗?

然后我们来看看mktime()。似乎强制它在UTC中运行的预期方式是:

get TZ,清除TZ,tzset()mktime(),reset TZ,tzset()

(有timegm(),但不是标准的)

我将处理很多这样的字符串,并且我不关心这个程序中的其他处理时间,所以这看起来像是很多毫无价值的开销,我能不能只在一开始就清除TZ和 tzset()

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

https://stackoverflow.com/questions/56529899

复制
相关文章

相似问题

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