(详细)如何计算从纪元1900到现在使用助推的持续时间

(Detailed) how to calculate time duration from epoch 1900 to now use boost?

本文关键字:持续时间 1900 何计算 详细 计算 纪元      更新时间:2023-10-16

作为标题,如何计算从epoch 1900到现在使用boost的持续时间?

编辑:很抱歉上一个问题太短。我将再次描述我的问题。我遇到了将生日保存为整数的问题。我创建了四个函数,如下所示:

  1. ptime到integer(按天):

    int ti=time_to_int(ptime(date(2012,1,1),0));
    => ti = 15430;//number of day from 1970 to 2012
    
  2. 整数到ptime:

    ptime pt = int_to_time(15430);
    
  3. 字符串的最佳时间:

    ptime pt(date(2012,1,1), 0);
    string s = time_to_string(pt, "%d.%m.%Y");
    
  4. 字符串到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();