[Delphi]DaysBetween・HoursBetween日付や時刻の間隔を知る
トップページへ
※全てのDelphi(楽天市場で探す ・ amazonで探す)で動作する保証はありません。また、内容に関し管理人は全ての責任を負いかねます
サンプル ※説明に必要な部分しか記述していません。
●ヘルプからの引用です
function DaysBetween(const ANow: TDateTime; const AThen: TDateTime): Integer;
指定された 2 つの TDateTime 値の間にある完全な日(24 時間)の数を返します。
DaysBetween 関数を呼び出すと,2 つの TDateTime 値の差(日数)を取得できます。
function HoursBetween(const ANow: TDateTime; const AThen: TDateTime): Int64;
2 つの指定された TDateTime 値の間にある時間数を返します。
HoursBetween 関数を呼び出すと,2 つの TDateTime 値の差(時間数)を取得できます。
DaysBetweenやHoursBetweenなどのサンプル文を掲載しました。
なお HourSpan だけは挙動が異なります。ヘルプによれば
HourSpan 関数を呼び出すと,2 つの TDateTime 値の差(時間数)を取得できます。完全な時間(60 分)だけを数に入れる HoursBetween 関数とは違って,HourSpan は不完全な時間を端数として報告します。
とのことですが、詳しくはヘルプをご覧下さい。
procedure TForm1.Button1Click(Sender: TObject); var w_s_datetime, w_e_datetime: TDateTime; w_interval: Integer; w_interval_d: Double; begin Memo1.Clear; w_s_datetime := VarToDateTime('2016/4/9'); w_e_datetime := VarToDateTime('2016/4/14'); w_interval := DateUtils.DaysBetween(w_s_datetime, w_e_datetime); Memo1.Lines.Add(IntToStr(w_interval) + '日'); w_s_datetime := VarToDateTime('2016/4/9'); w_e_datetime := VarToDateTime('2016/7/14'); w_interval := DateUtils.MonthsBetween(w_s_datetime, w_e_datetime); Memo1.Lines.Add(IntToStr(w_interval) + '月'); w_s_datetime := VarToDateTime('2016/4/9'); w_e_datetime := VarToDateTime('2017/4/14'); w_interval := DateUtils.MonthsBetween(w_s_datetime, w_e_datetime); Memo1.Lines.Add(IntToStr(w_interval) + '月'); w_s_datetime := VarToDateTime('2016/4/9'); w_e_datetime := VarToDateTime('2017/4/14'); w_interval := DateUtils.YearsBetween(w_s_datetime, w_e_datetime); Memo1.Lines.Add(IntToStr(w_interval) + '年'); w_s_datetime := VarToDateTime('2019/4/9'); w_e_datetime := VarToDateTime('2016/4/9'); w_interval := DateUtils.YearsBetween(w_s_datetime, w_e_datetime); Memo1.Lines.Add(IntToStr(w_interval) + '年'); w_s_datetime := VarToDateTime('2019/4/10'); w_e_datetime := VarToDateTime('2016/4/9'); w_interval := DateUtils.YearsBetween(w_s_datetime, w_e_datetime); Memo1.Lines.Add(IntToStr(w_interval) + '年'); w_s_datetime := VarToDateTime('2016/4/9 9:00'); w_e_datetime := VarToDateTime('2016/4/9 18:00'); w_interval := DateUtils.HoursBetween(w_s_datetime, w_e_datetime); Memo1.Lines.Add(IntToStr(w_interval) + '時間'); w_s_datetime := VarToDateTime('2016/4/9 9:00'); w_e_datetime := VarToDateTime('2016/4/9 9:30'); w_interval_d := DateUtils.HourSpan(w_s_datetime, w_e_datetime); Memo1.Lines.Add(FloatToStr(w_interval_d) + '時間'); w_s_datetime := VarToDateTime('2016/4/9 9:00'); w_e_datetime := VarToDateTime('2016/4/7 9:00'); w_interval := DateUtils.HoursBetween(w_s_datetime, w_e_datetime); Memo1.Lines.Add(IntToStr(w_interval) + '時間'); w_s_datetime := VarToDateTime('2016/4/9 9:00'); w_e_datetime := VarToDateTime('2016/4/9 12:00'); w_interval := DateUtils.MinutesBetween(w_s_datetime, w_e_datetime); Memo1.Lines.Add(IntToStr(w_interval) + '分間'); end;
このようになります。