作为标题,如何计算从1900年到现在使用提升的持续时间?
编辑:抱歉以前的问题太短了。我会再次描述我的问题。 我有关于将生日保存到数据库的问题作为整数。我创建了四个函数,如下所示:
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 to string:
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转换回日期似乎很糟糕。我想使用boost来做到这一点。
有什么建议吗? 谢谢!
答案 0 :(得分:0)
整数(int)不足以容纳自1900年以来的秒数。它只能容纳大约68年。你需要使用长(64位)。 Boost的time_duration将为您提供长达数秒的访问权限。你也可以使用@jogojapan提到的天数。然而,日长并不总是相同(23-25小时),所以有时候记录几天的事情更容易出错(如果你小心的话,它应该没问题)。
看看documentation中的一些例子。您可以减去两个ptime对象以获得time_duration:
time_duration td = ptime1 - ptime2;
long secElapsed = td.total_seconds();