Top / Programming / C++Builder / 日数の計算

日数の計算

○日後、○ヶ月後の計算

IncDay は,日数をインクリメントした日付を返します。

IncMonth は,月数をインクリメントした日付を返します。

IncYear は,年数をインクリメントした日付を返します。

#include <DateUtils.hpp>

//明日
TDate tomorrow = IncDay(Now());
std::puts(tomorrow.FormatString("yyyy/mm/dd").c_str());
//二日後
TDate dayAfterNext = IncDay(Now(), 2);
std::puts(dayAfterNext.FormatString("yyyy/mm/dd").c_str());

//来月
TDate nextMonth = IncMonth(Now());
std::puts(nextMonth.FormatString("yyyy/mm/dd").c_str());
//再来月
TDate monthAfterNext = IncMonth(Now(), 2);
std::puts(monthAfterNext.FormatString("yyyy/mm/dd").c_str());

//来年
TDate nextYear = IncYear(Now());
std::puts(nextYear.FormatString("yyyy/mm/dd").c_str());
//再来年
TDate yearNextAfter = IncYear(Now(), 2);
std::puts(yearNextAfter.FormatString("yyyy/mm/dd").c_str());

年数の計算

2つの日付の間のおよその年数を計算します。
年は常に同じ長さというわけではないので(うるう年など)、1年365.25日という仮定に基づいて近似値を返します。

YearsBetween は、2 つの指定された TDateTime 値の間にあるおよその年数を返します。

YearSpan は、2 つの指定された TDateTime 値の間にあるおよその年数(端数を含む)を返します。

#include <DateUtils.hpp>

TDateTime ANow = EncodeDateTime(2005, 9, 26, 10, 30, 0, 0);
TDateTime AThen = EncodeDateTime(2007, 10, 3, 22, 15, 0, 0);

//YearsBetween は、2 つの指定された TDateTime 値の間にある
//およその年数を返します。
int years = YearsBetween(ANow, AThen); //=> 2

//YearSpan は、2 つの指定された TDateTime 値の間にある
//およその年数(端数を含む)を返します。
double span = YearSpan(ANow, AThen); //=> 2.01914

月数の計算

2つの日付の間のおよその月数を計算します。
月はすべてが同じ長さというわけではないので,MonthsBetween は 1 月 30.4375 日という仮定に基づいて近似値を返します。

MonthsBetween は、2 つの指定された TDateTime 値の間にあるおよその月数を返します。

MonthSpan は、2 つの指定された TDateTime 値の間にある端数を含んだおよその月数を返します。

#include <DateUtils.hpp>

TDateTime ANow = TDate(2005, 4, 1);
TDateTime AThen = TDate(2005, 6, 30);

//MonthsBetween は、2 つの指定された TDateTime 値の間にある
//およその月数を返します。
int months = MonthsBetween(ANow, AThen); //=> 2

//MonthSpan は、2 つの指定された TDateTime 値の間にある端数を含んだ
//およその月数を返します。
double span = MonthSpan(ANow, AThen);

//1月 30.4375 日という仮定に基づいて近似値を返すため、
//2月1日と3月1日の差も 0 として報告します。
int months = MonthsBetween(TDate(2005, 2, 1), TDate(2005, 3, 1)); //=> 0

週数の計算

2つの日付の間の週数を計算します。

WeeksBetween は、2 つの指定された TDateTime 値の間にある週数を返します。

WeekSpan は、2 つの指定された TDateTime 値の間にある週数(端数を含む)を返します。

#include <DateUtils.hpp>

TDateTime ANow = TDate(2005, 4, 1);
TDateTime AThen = TDate(2005, 6, 30);

//WeeksBetween は、2 つの指定された TDateTime 値の間にある
//週数を返します。
int months = WeeksBetween(ANow, AThen); //=> 12
//WeekSpan は、2 つの指定された TDateTime 値の間にある
//週数(端数を含む)を返します。
double span = WeekSpan(ANow, AThen); //=> 12.8571

日数の計算

2つの日付の間の日数を計算します。

DaysBetween は、指定された 2 つの TDateTime 値の間にある完全な日(24 時間)の数を返します。

DaySpan は、2 つの指定された TDateTime 値の間の日数(端数を含む)を返します。

#include <DateUtils.hpp>

TDateTime ANow = EncodeDateTime(2005, 9, 26, 10, 30, 0, 0);
TDateTime AThen = EncodeDateTime(2005, 10, 3, 22, 15, 0, 0);

//DaysBetween は,指定された 2 つの TDateTime 値の間にある
//完全な日(24 時間)の数を返します。
int days = DaysBetween(ANow, AThen); //=> 7
std::cout << days << std::endl;  //7

//DaySpan は,2 つの指定された TDateTime 値の間の
//日数(端数を含む)を返します。
double span = DaySpan(ANow, AThen); //=> 7.48958

時、分、秒数の計算

HoursBetween は、2 つの指定された TDateTime 値の間にある時間数を返します。

HourSpan は、2 つの指定された TDateTime 値の間の時間数(端数を含む)を返します。

MinutesBetween は、2 つの指定された TDateTime 値の間にある分数を返します。

MinuteSpan は、2 つの指定された TDateTime 値の間にある分数(端数を含む)を返します。

SecondsBetween は、2 つの指定された TDateTime 値の間にある秒数を返します。

SecondSpan は、2 つの指定された TDateTime 値の間にある秒数(端数を含む)を返します。

//HoursBetween は、2 つの指定された TDateTime 値の間にある時間数を返します。
int hours = HoursBetween(TTime(0, 0, 0, 0), TTime(22, 0, 0, 0)); //=> 22
//HourSpan は、2 つの指定された TDateTime 値の間の
//時間数(端数を含む)を返します。
double hourSpan = HourSpan(TTime(0, 0, 0, 0), TTime(22, 30, 0, 0)); //=> 22.5

//MinutesBetween は、2 つの指定された TDateTime 値の間にある分数を返します。
int minutes = MinutesBetween(TTime(0, 0, 0, 0), TTime(0, 5, 30, 0)); //=> 5
//MinuteSpan は、2 つの指定された TDateTime 値の間にある
//分数(端数を含む)を返します。
double minSpan = MinuteSpan(TTime(0, 0, 0, 0), TTime(0, 5, 30, 0)); //=> 5.5

//SecondsBetween は、2 つの指定された TDateTime 値の間にある秒数を返します。
int seconds = SecondsBetween(TTime(0, 0, 0, 0), TTime(0, 0, 10, 50)); //=> 10
//SecondSpan は、2 つの指定された TDateTime 値の間にある
//秒数(端数を含む)を返します。
double secSpan = SecondSpan(TTime(0, 0, 0, 0), TTime(0, 0, 10, 50)); //=> 10.5