没有明显的时区与C ++的时区偏移类型。滚我们自己?

时间:2013-06-04 22:07:01

标签: c++ datetime timezone iso8601

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

此日期格式对应于ISO 8601,.NET中的System.DateTimeOffset以及多个数据库系统中的TIMESTAMP WITH TIME ZONE。

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

注意:

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

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

  • 在boost和C ++ 11中,
  • time_point很可爱,但我看不出如何将它应用于这个问题,至少在没有笨拙的时钟(或时代)扩散的情况下也是如此。但是,我愿意接受如何做的指导。

后备是我们自己的,但我无法相信我们是第一个面对这个问题。

1 个答案:

答案 0 :(得分:1)

使用boost::local_date_time并存储UTC和TZ偏移量,而不是存储本地时间和TZ偏移量。它的工作方式完全相同,并已为您推出。