4

我搜索了 Google 和 StackOverflow,并找到了切题的讨论,但没有解决这个问题:是否有任何标准或常用的 C++ 类型来保存对应于(本地时间,与 UTC 的偏移量)的时间戳?

此日期格式对应于 ISO 8601、.NET 中的 System.DateTimeOffset 和几个数据库系统中的 TIMESTAMP WITH TIME ZONE。

最好,我希望能正确处理比较和增量,并且已经转换为/从 ISO 8601 转换。

笔记:

  • 无论它们有什么好处,使用 POSIX 类型的时区都不是一种选择。我们使用医疗行业标准接口与之交互的系统提供时间戳作为未指定的本地时间或(本地时间,与 UTC 的偏移量)。他们根本不提供完整的时区信息。

  • 将所有内容都转换为 UTC 也不是一种选择。当地时间,从记录时间的系统的角度来看,是我们不能丢失的重要信息。

  • boost 和 C++11 中的 time_point 很可爱,但我看不出如何将它应用到这个问题上,至少在没有时钟(或纪元)繁琐的情况下是这样。但是,我愿意接受指导。

后备是推出我们自己的,但我不敢相信我们是第一个面对这个问题的人。

4

1 回答 1

1

不要存储本地时间和 TZ 偏移,而是使用boost::local_date_time和存储 UTC 和 TZ 偏移。它的效果完全相同,并且已经为您推出。

于 2013-06-04T22:50:07.540 回答