C+;没有明显的时区偏移类型的时间戳+;。我们自己滚? 我已经搜索了谷歌和StAdvExcel,并且找到了切切的讨论,但是没有解决这个问题的方法:有没有标准的或常用的C++类型来保存一个对应于(本地时间,UTC偏移量)的时间戳?p>

C+;没有明显的时区偏移类型的时间戳+;。我们自己滚? 我已经搜索了谷歌和StAdvExcel,并且找到了切切的讨论,但是没有解决这个问题的方法:有没有标准的或常用的C++类型来保存一个对应于(本地时间,UTC偏移量)的时间戳?p>,c++,datetime,timezone,iso8601,C++,Datetime,Timezone,Iso8601,此日期格式对应于ISO 8601、.NET中的System.DateTimeOffset以及多个数据库系统中带有时区的时间戳 最好是,我希望能够正确处理比较和增量,并且已经实现了与ISO8601的转换 注: 无论它们有什么好处,使用POSIX类型的时区都不是一个选项。我们使用医疗行业标准接口与之交互的系统提供时间戳,可以是未指定的本地时间,也可以是(本地时间,与UTC的偏移量)。它们根本不提供完整的时区信息 将所有内容转换为UTC也不是一个选项。从记录时间的系统的角度来看,本地时间是我们不能丢

此日期格式对应于ISO 8601、.NET中的System.DateTimeOffset以及多个数据库系统中带有时区的时间戳

最好是,我希望能够正确处理比较和增量,并且已经实现了与ISO8601的转换

注:

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

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

  • boost和C++11中的time_point很可爱,但我看不出如何将其应用于这个问题,至少在没有大量时钟(或纪元)的情况下是如此。但是,我愿意接受有关如何实现这一目标的指导


退路是我们自己的,但我不敢相信我们是第一个面对这个问题的人。

不要存储本地时间和TZ偏移量,而是使用
boost::local\u date\u time
存储UTC和TZ偏移量。它的工作原理完全相同,并且已经为您推出了。

我认为其他所有人都使用POSIX times、UTC或boost/C++11。我无法想象为什么这些对你不起作用。我要说的是,只要使用一种正常类型,以及原始时区,似乎一切都解决了。谢谢,马克,但我需要澄清。boost::localDateTime需要一个时区ptr,甚至自定义时区也需要ISO 8601/etc中没有的名称和其他信息。是否有一些时区的风格只需要UTC偏移量就可以了?time\u zone\u base的注释建议您可以创建一个使用UTC偏移量的子类。基于此,我接受这个答案。马克,谢谢你给我指明了正确的方向。