我现在使用了boost :: gregorian :: date.
我可以看到有相关的月份,年份和周数持续时间类型.我可以看到如何使用已知的持续时间来推进给定的日期.
问:但是如何才能在几个月(或几年或几周)内得出两个日期之间的差异?
我希望找到一个像以下的功能:
template<typename DURATION>
DURATION date_diff<DURATION>(const date& d1,const date& d2);
Run Code Online (Sandbox Code Playgroud)
还需要对圆角进行一些处理.
此函数将返回d1和d2之间(比方说)整月的数量.
小智 12
你的意思是日期之间的差异(09/12 - 08/05 = 01/07 = 19个月)或时间差((date2_seconds - date1_seconds)/ seconds_per_month)?
对于第一种情况,可以使用访问器
greg_year date::year() const;
greg_month date::month() const;
Run Code Online (Sandbox Code Playgroud)
那么月份之间的差异:
int months = (data2.year() - date1.year())*12 + date2.month() - date1.month()
Run Code Online (Sandbox Code Playgroud)
对于第二种情况,你有运营商
date_duration date::operator-(date) const;
Run Code Online (Sandbox Code Playgroud)
并且date_duration具有以下有用成员:
long date_duration::days() const;
Run Code Online (Sandbox Code Playgroud)
所以你可以这样做:
//date date1, date2
int months = (date2-date1).days()/30;
Run Code Online (Sandbox Code Playgroud)