我已经搜索了Google和StackOverflow,并发现了切题的讨论,但没有解决这个问题:是否有任何标准或常用的c++类型来保存对应于(本地时间,从UTC偏移)的时间戳?
此日期格式对应于ISO 8601, to System。. net中的DateTimeOffset,以及几个数据库系统中的TIMESTAMP WITH TIME ZONE。
最好,我希望有正确处理比较和增量的东西,并且已经转换到/从ISO 8601。
指出:
-
不管它们有什么好处,使用posix类型的时区都不是一个选择。与我们交互的系统使用医疗行业标准接口,提供的时间戳要么是未指定的本地时间,要么是(本地时间,与UTC的偏移量)。它们根本不提供完整的时区信息。
-
将所有内容转换为UTC也不是一个选项。从记录时间的系统角度来看,本地时间是我们不能丢失的重要信息。
boost和c++ 11中的 time_point很好,但我不知道如何将其应用于此问题,至少没有笨拙的时钟(或epoch)扩散。但是,我愿意接受有关如何做到这一点的指导。
退路是我们自己滚,但我不敢相信我们是第一个面对这个问题的人。
不存储本地时间和TZ偏移量,而是使用boost::local_date_time
并存储UTC和TZ偏移量。结果完全相同,并且已经为您滚动了