关于datetime:C ++的时区偏移类型没有明显的时间戳。 滚我们自己?

No obvious timestamp with time zone offset type for C++. Roll our own?

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

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

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

笔记:

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

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

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

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


而不是存储本地时间和TZ偏移量,使用boost::local_date_time并存储UTC和TZ偏移量。 它完全相同,已经为你推出了。