【发布时间】:2012-09-13 20:46:28
【问题描述】:
这个问题困扰了我好一分钟。我正在开发一个用 C++ 编写的程序,我需要能够在两个不同的服务器之间发送以 ISO8601 编码的时间。这里的主要坚持者似乎是 Windows。
到目前为止,我已经从 NetBSD 移植了strptime(),以便轻松地从网络中读取日期/时间字符串并将其转换为tm*。但是,在正确地将其转换为本地化的tm* 时,我完全被难住了,所以我可以使用strftime() 在他们的本地时区向用户显示这个时间。一种天真的方法是简单地获取 localtime(time(0)) 和 gmtime(time(0)) 之间的差异,但这对于涉及夏令时的任意日期是不一致的。
到目前为止,我一直采用的方法是仅使用 POSIX 日期和时间函数,并在必要时编写 Windows 垫片(目前已为 strptime() 完成,如果需要,可能在将来为 timegm() 完成)。我宁愿继续这样做,但简单的事实是 Windows 中的 tm* 结构缺少 Linux 和 OSX 所做的一些字段,所以我可能别无选择,只能编写由 @ 保护的不可移植代码987654330@。我也真的不希望为此付出任何努力。
【问题讨论】:
-
即使您不想使用 boost,如果这样可以解决问题,我仍然建议您使用 boost...
标签: c++ windows linux macos time