gpt4 book ai didi

c++ - (详细)如何计算从时期1900到现在使用boost的持续时间?

转载 作者:行者123 更新时间:2023-12-02 10:26:15 27 4
gpt4 key购买 nike

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

编辑:很抱歉以前的问题太短。我将再次描述我的问题。
我有关于将生日另存为整数的问题。我创建了四个函数,用法如下:

  • ptime转换为整数(按天):
     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转换为字符串:
     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年以来的时代,所有工作都做得很好。那么如何将01/01/1945转换为整数?我认为需要使用从1900年开始的时代。
    但是,当将01/01/2012从1900转换为int时,它返回负数,因为“我认为”滴答计数以毫秒为单位溢出(32位)。
    使用某些方法手动计算int的日期是可以的,但是将int转换回date似乎不好。我想使用升压来做到这一点。

    有什么建议吗?
    谢谢!

    最佳答案

    整数(int)不足以容纳自1900年以来的秒数。它只能容纳68年。您需要使用长(64位)。 Boost的time_duration将使您可以访问很长的秒数。您还可以使用@jogojapan提到的天数。但是,一天的长度并不总是相同的(23-25小时),因此有时跟踪一天中的事情更容易出错(但是如果小心的话,应该没问题)。

    看一看documentation中的一些示例。您可以减去两个ptime对象以获得time_duration:

    time_duration td = ptime1 - ptime2;
    long secElapsed = td.total_seconds();

    关于c++ - (详细)如何计算从时期1900到现在使用boost的持续时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13372988/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com