(详细)如何计算从纪元1900到现在使用助推的持续时间
(Detailed) how to calculate time duration from epoch 1900 to now use boost?
作为标题,如何计算从epoch 1900到现在使用boost的持续时间?
编辑:很抱歉上一个问题太短。我将再次描述我的问题。我遇到了将生日保存为整数的问题。我创建了四个函数,如下所示:
-
ptime到integer(按天):
int ti=time_to_int(ptime(date(2012,1,1),0)); => ti = 15430;//number of day from 1970 to 2012
-
整数到ptime:
ptime pt = int_to_time(15430);
-
字符串的最佳时间:
ptime pt(date(2012,1,1), 0); string s = time_to_string(pt, "%d.%m.%Y");
-
字符串到ptime:
ptime pt=string_to_time(%d.%m.%Y);
问题:上面,我使用了1970年的大纪元,一切都很好。那么如何将1945年1月1日转换为整数呢?我认为需要使用1900年的大纪元。然而,当将2012年1月1日从1900转换为int时,它会返回负数,因为"我认为"以毫秒为单位的刻度计数溢出(32位)。使用某些方法手动计算日期到int是可以的,但将int转换回日期似乎不好。我想用boost来做这件事。
有什么建议吗?谢谢
Integer(int)不够大,无法容纳1900以来的秒数。它只能保存大约68年。您需要使用长(64位)。Boost的time_duration将允许您访问秒数作为长度。你也可以使用@jogojapan提到的天数。然而,一天的时间并不总是一样的(23-25小时),所以有时记录几天中的事情更容易出错(如果你小心的话,应该没问题)。
看看文档中的一些示例。您可以减去两个ptime对象来获得时间持续时间:
time_duration td = ptime1 - ptime2;
long secElapsed = td.total_seconds();
相关文章:
- 从持续时间构造std::chrono::system_clock::time_point
- 我有一个对象,它将在整个程序的持续时间内实例化,但一个类成员不会,我应该动态分配它吗?
- 时间持续时间到时间字符串
- 指向(数据)成员的指针作为非类型模板参数,例如具有自动存储持续时间/无链接
- 为什么具有静态存储持续时间的同一内联变量在包含在 VS2017 编译的两个翻译单元中时会构造和销毁两次
- 将毫秒转换为给定格式的持续时间
- 具有静态存储持续时间的常量初始化变量的初始化顺序
- 划分和乘以STD :: Chrono ::持续时间
- 静态存储持续时间初始化
- C++计划持续时间内(字体)资源的分配
- FFMPEG:具有不同持续时间的多路复用流
- 在不同翻译单元中具有静态存储持续时间的依赖非局部常量浮点变量的常量初始化
- 使用System_Clock :: TO_TIME_T警告持续时间_t
- 访问和存储/解析性std :: Chrono ::持续时间:: milliseconds(cpprest)时使用什么类型
- 我可以让QT到概要文件插槽执行持续时间吗?
- 在STD :: Chrono ::剩余时间测量的持续时间
- 自定义 AVIOContext 的未定义 AVFormatContext 持续时间
- 使用计时比较C++的持续时间/秒数并不像预期的那样工作
- 为什么 std::future::wait_for 不等待正确的持续时间
- (详细)如何计算从纪元1900到现在使用助推的持续时间