C++ (详细)如何计算从1900年到现在使用boost的持续时间?
作为标题,如何计算从纪元1900到现在使用boost的持续时间 编辑:很抱歉上一次的问题太短。我将再次描述我的问题。 我无法将生日作为整数保存到数据库中。我创建了四个函数,如下所示:C++ (详细)如何计算从1900年到现在使用boost的持续时间?,c++,date,datetime,boost,time,C++,Date,Datetime,Boost,Time,作为标题,如何计算从纪元1900到现在使用boost的持续时间 编辑:很抱歉上一次的问题太短。我将再次描述我的问题。 我无法将生日作为整数保存到数据库中。我创建了四个函数,如下所示: ptime to integer(按天): 整数到ptime: ptime pt = int_to_time(15430); ptime到字符串: ptime pt(date(2012,1,1), 0); string s = time_to_string(pt, "%d.%m.%Y"); 连接到p
ptime pt = int_to_time(15430);
ptime pt(date(2012,1,1), 0);
string s = time_to_string(pt, "%d.%m.%Y");
ptime pt = int_to_time(15430);
ptime pt=字符串到时间(%d.%m.%Y)time_duration td = ptime1 - ptime2;
long secElapsed = td.total_seconds();
整数(int)不够大,无法容纳1900年以来的秒数。它只能保存大约68年。您需要使用长字符(64位)。Boost’s将使您能够访问最长的秒数。您还可以使用@jogojapan提到的天数。然而,一天的长度并不总是相同的(23-25小时),所以有时候在一天中跟踪事情更容易出错(如果你小心的话,应该可以)
请看下面的示例。可以减去两个ptime对象以获得时间持续时间:
time_duration td = ptime1 - ptime2;
long secElapsed = td.total_seconds();
如果只与出生日期相关,而与出生时间无关,您可以使用1900年以来的天数,而不是秒数吗?这样当然可以避免溢出问题。如果只与出生日期相关,而与出生时间无关,您是否可以使用1900年以来的天数,而不是秒数?这样肯定可以避免溢出问题。能否更详细地说明“Boost的[time_duration][1]可以让您访问最长的秒数”?您应该查看文档,但我添加了一个非常基本的示例。我也使用了与您的示例相同的示例。再次检查,我发现我的错误是在函数printf中使用int而不是unsigned,“%d”而不是“%u”(“%d”,time\u int)。还有一个错误很重要,我将total_seconds()直接除以60来计算分钟:long minutes=td.total_seconds()/60。感谢您更详细地了解“Boost的[time_duration][1]可以让您访问最长的秒数”?您应该查看文档,但我添加了一个非常基本的示例。我也使用了与您的示例相同的示例。再次检查,我发现我的错误是在函数printf中使用int而不是unsigned,“%d”而不是“%u”(“%d”,time\u int)。还有一个错误很重要,我将total_seconds()直接除以60来计算分钟:long minutes=td.total_seconds()/60。谢谢