COleDateTimeSpan クラス

Note

Microsoft Foundation Classes (MFC) ライブラリと Active Template Library (ATL) は引き続きサポートされています。 ただし、機能の追加やドキュメントの更新は行われません。

相対時間 (期間) を表します。

構文

class COleDateTimeSpan

メンバー

パブリック コンストラクター

名前 説明
COleDateTimeSpan::COleDateTimeSpan COleDateTimeSpan オブジェクトを構築します。

パブリック メソッド

名前 説明
COleDateTimeSpan::Format COleDateTimeSpan オブジェクトの書式設定された文字列表現を生成します。
COleDateTimeSpan::GetDays この COleDateTimeSpan オブジェクトが表す時間の長さの日数の部分を返します。
COleDateTimeSpan::GetHours この COleDateTimeSpan オブジェクトが表す時間の長さの時間数の部分を返します。
COleDateTimeSpan::GetMinutes この COleDateTimeSpan オブジェクトが表す時間の長さの分の部分を返します。
COleDateTimeSpan::GetSeconds この COleDateTimeSpan オブジェクトが表す時間の長さの秒の部分を返します。
COleDateTimeSpan::GetStatus この COleDateTimeSpan オブジェクトの状態 (有効性) を取得します。
COleDateTimeSpan::GetTotalDays この COleDateTimeSpan オブジェクトが表す日数を返します。
COleDateTimeSpan::GetTotalHours この COleDateTimeSpan オブジェクトが表す時間数を返します。
COleDateTimeSpan::GetTotalMinutes この COleDateTimeSpan オブジェクトが表す分の数を返します。
COleDateTimeSpan::GetTotalSeconds この COleDateTimeSpan オブジェクトが表す秒数を返します。
COleDateTimeSpan::SetDateTimeSpan この COleDateTimeSpan オブジェクトの値を設定します。
COleDateTimeSpan::SetStatus この COleDateTimeSpan オブジェクトの状態 (有効性) を設定します。

パブリック演算子

名前 説明
演算子 +、- COleDateTimeSpan 値を加算、減算、符号変更します。
operator +=、-= COleDateTimeSpan 値とこの COleDateTimeSpan 値の間で加算と減算を行います。
operator = COleDateTimeSpan 値をコピーします。
operator ==、<、<= 2 つの COleDateTimeSpan 値を比較します。
演算子 double この COleDateTimeSpan 値を double に変換します。

パブリック データ メンバー

名前 説明
COleDateTimeSpan::m_span この double オブジェクトの基になる COleDateTimeSpan を格納します。
COleDateTimeSpan::m_status この COleDateTimeSpan オブジェクトの状態を格納します。

解説

COleDateTimeSpan には基底クラスはありません。

COleDateTimeSpan は時間を日数で保持します。

COleDateTimeSpan はそのコンパニオン クラス COleDateTime とともに使用されます。 COleDateTime では OLE オートメーションの DATE データ型をカプセル化します。 COleDateTime は絶対時間値を表します。 COleDateTime のすべての計算に COleDateTimeSpan 値が関与します。 これらのクラス間の関係は、CTime と CTimeSpan の間の関係に似ています。

COleDateTime クラスと COleDateTimeSpan クラスの詳細については、記事「日付と時刻: Automation のサポート」を参照してください。

要件

ヘッダー: ATLComTime.h

COleDateTimeSpan の関係演算子

比較演算子。

bool operator==(const COleDateTimeSpan& dateSpan) const throw();
bool operator!=(const COleDateTimeSpan& dateSpan) const throw();
bool operator<(const COleDateTimeSpan& dateSpan) const throw();
bool operator>(const COleDateTimeSpan& dateSpan) const throw();
bool operator<=(const COleDateTimeSpan& dateSpan) const throw();
bool operator>=(const COleDateTimeSpan& dateSpan) const throw();

パラメーター

dateSpan
比較対象の COleDateTimeSpan。

戻り値

これらの演算子は 2 つの日数/時間間隔値を比較して条件が真の場合は TRUE を返し、そうでない場合は FALSE を返します。

解説

Note

いずれかのオペランドが無効な場合は ATLASSERT が発生します。

例

COleDateTimeSpan spanOne(3, 12, 0, 0); // 3 days and 12 hours
COleDateTimeSpan spanTwo(spanOne);     // 3 days and 12 hours
BOOL b;
b = spanOne == spanTwo;                // TRUE
b = spanOne < spanTwo;                 // FALSE, same value
b = spanOne > spanTwo;                 // FALSE, same value
b = spanOne <= spanTwo;                // TRUE, same value
b = spanOne >= spanTwo;                // TRUE, same value   

spanTwo.SetStatus(COleDateTimeSpan::invalid);
b = spanOne == spanTwo;                // FALSE, different status
b = spanOne != spanTwo;                // TRUE, different status

 

COleDateTimeSpan ts1(100.0);   // one hundred days
COleDateTimeSpan ts2(110.0);   // ten more days

ASSERT((ts1 != ts2) && (ts1 < ts2) && (ts1 <= ts2));   

COleDateTimeSpan::COleDateTimeSpan

COleDateTimeSpan オブジェクトを構築します。

COleDateTimeSpan() throw();
COleDateTimeSpan(double dblSpanSrc) throw();
COleDateTimeSpan(LONG lDays, int nHours, int nMins, int nSecs) throw();

パラメーター

dblSpanSrc
新しい COleDateTimeSpan オブジェクトにコピーされる日数。

lDays、nHours、nMins、nSecs
新しい COleDateTimeSpan オブジェクトにコピーされる日数と時間の値を示します。

解説

これらのコンストラクターはすべて、新しい COleDateTimeSpan オブジェクトを作成して指定の値に初期化します。 これらの各コンストラクターの簡単な説明を次に示します。

  • COleDateTimeSpan( )COleDateTimeSpan オブジェクトを作成して 0 に初期化します。

  • COleDateTimeSpan(dblSpanSrc) 浮動小数点値から COleDateTimeSpan オブジェクトを構築します。

  • COleDateTimeSpan(lDays,nHours,nMins,nSecs) 指定した数値に初期化された COleDateTimeSpan オブジェクトを構築します。

新しい COleDateTimeSpan オブジェクトの状態は有効に設定されます。

COleDateTimeSpan 値の限界の詳細については、記事「日付と時刻: Automation のサポート」を参照してください。

例

COleDateTimeSpan spanOne(2.75);          // 2 days and 18 hours
COleDateTimeSpan spanTwo(2, 18, 0, 0);   // 2 days and 18 hours
COleDateTimeSpan spanThree(3, -6, 0, 0); // 2 days and 18 hours

COleDateTimeSpan ts1;               // Uninitialized time value
COleDateTimeSpan ts2a(ts1);         // Copy constructor
COleDateTimeSpan ts2b = ts1;         // Copy constructor again
COleDateTimeSpan ts3(100.0);          // 100 days
COleDateTimeSpan ts4(0, 1, 5, 12);   // 1 hour, 5 minutes, and 12 seconds

COleDateTimeSpan::Format

COleDateTimeSpan オブジェクトの書式設定された文字列表現を生成します。

CString Format(LPCTSTR pFormat) const;
CString Format(UINT nID) const;

パラメーター

pFormat
printf の書式設定文字列に似た書式設定文字列。 前にパーセント (%) 記号の付いた書式設定コードは、対応する COleDateTimeSpan コンポーネントに置き換えられます。 書式設定文字列内の他の文字は、返される文字列にそのままコピーされます。 Format の書式設定コードの値と意味は次のとおりです。

  • %H 現在の日の時間数

  • %M 現在の時間の分数

  • %S 現在の分の秒数

  • %% パーセント記号

Format が受け入れる書式コードは上記の 4 つだけです。

-

nID
書式制御文字列のリソース ID。

戻り値

書式設定された日数/時間間隔値が格納されている CString。

解説

これらの関数は、時間間隔値を書式設定した表現を作成するときに呼び出します。 この COleDateTimeSpan オブジェクトの状態が null の場合、戻り値は空の文字列になります。 状態が無効の場合に返される文字列は、文字列リソース IDS_INVALID_DATETIMESPAN で指定されます。

この関数の形式の簡単な説明を次に示します。

Format(pFormat)
この形式では、値の書式が書式文字列を使用して設定されます。この文字列の中には、printf と同様に、前にパーセント記号 (%) の付いた特別な書式設定コードがあります。 書式設定文字列は、パラメーターとして関数に渡されます。

Format(nID)
この形式では、値の書式が書式文字列を使用して設定されます。この文字列の中には、printf と同様に、前にパーセント記号 (%) の付いた特別な書式設定コードがあります。 書式設定文字列はリソースです。 この文字列リソースの ID が、パラメーターとして渡されます。

例

// get the current time
COleDateTime tmStart = COleDateTime::GetCurrentTime();

// waste some time
CString str;
::Sleep(3000);

// get the current time again
COleDateTime tmFinish = COleDateTime::GetCurrentTime();

// find the difference
COleDateTimeSpan tmSpan = tmFinish - tmStart;

// tell the user
str = tmSpan.Format(_T("%S seconds elapsed"));
_tprintf_s(_T("%s\n"), (LPCTSTR) str);

COleDateTimeSpan::GetDays

この日数/時間間隔値の日数の部分を取得します。

LONG GetDays() const throw();

戻り値

この日数/時間間隔値の日数の部分。

解説

この関数の戻り値の範囲は、およそ - 3,615,000 から 3,615,000 までです。

COleDateTimeSpan オブジェクトの値を照会するその他の関数については、次のメンバー関数を参照してください。

例

COleDateTimeSpan ts(3, 1, 5, 12); // 3 days, 1 hour, 5 min, and 12 sec
ASSERT(ts.GetDays() == 3);   

COleDateTimeSpan::GetHours

この日数/時間間隔値の時間数の部分を取得します。

LONG GetHours() const throw();

戻り値

この日数/時間間隔値の時間数の部分。

解説

この関数の戻り値の範囲は - 23 から 23 までです。

COleDateTimeSpan オブジェクトの値を照会するその他の関数については、次のメンバー関数を参照してください。

例

COleDateTimeSpan ts(3, 1, 5, 12); // 3 days, 1 hour, 5 min, and 12 sec
ASSERT(ts.GetHours() == 1);

COleDateTimeSpan::GetMinutes

この日数/時間間隔値の分の部分を取得します。

LONG GetMinutes() const throw();

戻り値

この日数/時間間隔値の分の部分。

解説

この関数の戻り値の範囲は - 59 から 59 までです。

COleDateTimeSpan オブジェクトの値を照会するその他の関数については、次のメンバー関数を参照してください。

例

COleDateTimeSpan ts(3, 1, 5, 12); // 3 days, 1 hour, 5 min, and 12 sec
ASSERT(ts.GetMinutes() == 5);   

COleDateTimeSpan::GetSeconds

この日数/時間間隔値の秒の部分を取得します。

LONG GetSeconds() const throw();

戻り値

この日数/時間間隔値の秒の部分。

解説

この関数の戻り値の範囲は - 59 から 59 までです。

COleDateTimeSpan オブジェクトの値を照会するその他の関数については、次のメンバー関数を参照してください。

例

COleDateTimeSpan ts(3, 1, 5, 12); // 3 days, 1 hour, 5 min, and 12 sec
ASSERT(ts.GetSeconds() == 12);   

COleDateTimeSpan::GetStatus

この COleDateTimeSpan オブジェクトの状態 (有効性) を取得します。

DateTimeSpanStatus GetStatus() const throw();

戻り値

この COleDateTimeSpan 値の状態。

解説

戻り値は、DateTimeSpanStatus クラス内で定義されている COleDateTimeSpan 列挙型によって定義されています。

enum DateTimeSpanStatus{
   valid = 0,
   invalid = 1,
   null = 2,
};

これらの状態値の簡単な説明については、次の一覧を参照してください。

  • COleDateTimeSpan::valid この COleDateTimeSpan オブジェクトが有効であることを示します。

  • COleDateTimeSpan::invalid この COleDateTimeSpan オブジェクトが無効であること、つまりその値が正しくない可能性があることを示します。

  • COleDateTimeSpan::null この COleDateTimeSpan オブジェクトが null であること、つまりこのオブジェクトに値が指定されていないことを示します。 (これは、C++ の NULL ではなく、データベースで "値がない" ことを意味する "null" です。)

COleDateTimeSpan オブジェクトの状態は、次の場合に無効になります。

  • このオブジェクトで、算術代入演算 (つまり += または -=) の間にオーバーフローまたはアンダーフローが発生した場合。

  • このオブジェクトに無効な値が割り当てられた場合。

  • このオブジェクトの状態が、SetStatus を使用して明示的に無効に設定された場合。

状態を無効に設定する可能性のある演算の詳細については、「COleDateTimeSpan::operator +、-」と「COleDateTimeSpan::operator +=、-=」を参照してください。

COleDateTimeSpan 値の限界の詳細については、記事「日付と時刻: Automation のサポート」を参照してください。

COleDateTimeSpan::GetTotalDays

この日数/時間間隔値を日数で表したものを取得します。

double GetTotalDays() const throw();

戻り値

この日数/時間間隔値を日数で表したもの。 この関数は、プロトタイプでは double を返すように宣言されていますが、常に整数値を返します。

解説

この関数の戻り値の範囲は、およそ - 3.65e6 から 3.65e6 までです。

COleDateTimeSpan オブジェクトの値を照会するその他の関数については、次のメンバー関数を参照してください。

例

COleDateTimeSpan ts(3, 1, 5, 12); // 3 days, 1 hour, 5 min, and 12 sec
ASSERT(ts.GetTotalDays() == 3);
ASSERT(ts.GetTotalHours() == 73);
ASSERT(ts.GetTotalMinutes() == 4385);
ASSERT(ts.GetTotalSeconds() == 263112);   

COleDateTimeSpan::GetTotalHours

この日数/時間間隔値を時間数で表したものを取得します。

double GetTotalHours() const throw();

戻り値

この日数/時間間隔値を時間数で表したもの。 この関数は、プロトタイプでは double を返すように宣言されていますが、常に整数値を返します。

解説

この関数の戻り値の範囲は、およそ - 8.77e7 から 8.77e7 までです。

COleDateTimeSpan オブジェクトの値を照会するその他の関数については、次のメンバー関数を参照してください。

例

GetTotalDays の例を参照してください。

COleDateTimeSpan::GetTotalMinutes

この日数/時間間隔値を分の数で表したものを取得します。

double GetTotalMinutes() const throw();

戻り値

この日数/時間間隔値を分の数で表したもの。 この関数は、プロトタイプでは double を返すように宣言されていますが、常に整数値を返します。

解説

この関数の戻り値の範囲は、およそ - 5.26e9 から 5.26e9 までです。

COleDateTimeSpan オブジェクトの値を照会するその他の関数については、次のメンバー関数を参照してください。

例

GetTotalDays の例を参照してください。

COleDateTimeSpan::GetTotalSeconds

この日数/時間間隔値を秒数で表したものを取得します。

double GetTotalSeconds() const throw();

戻り値

この日数/時間間隔値を秒数で表したもの。 この関数は、プロトタイプでは double を返すように宣言されていますが、常に整数値を返します。

解説

この関数の戻り値の範囲は、およそ - 3.16e11 から 3.16e11 までです。

COleDateTimeSpan オブジェクトの値を照会するその他の関数については、次のメンバー関数を参照してください。

例

GetTotalDays の例を参照してください。

COleDateTimeSpan::m_span

この double オブジェクトの基になる COleDateTime 値。

double m_span;

解説

この値は、日数/時間間隔を日数で表します。

注意事項

double データ メンバーの値を変更すると、この COleDateTimeSpan オブジェクトの値が変更されます。 この COleDateTimeSpan オブジェクトの状態は変更されません。

COleDateTimeSpan::m_status

このデータ メンバーの型は、DateTimeSpanStatus クラス内で定義されている列挙型 COleDateTimeSpan です。

DateTimeSpanStatus m_status;

解説

enum DateTimeSpanStatus{
   valid = 0,
   invalid = 1,
   null = 2,
   };

これらの状態値の簡単な説明については、次の一覧を参照してください。

  • COleDateTimeSpan::valid この COleDateTimeSpan オブジェクトが有効であることを示します。

  • COleDateTimeSpan::invalid この COleDateTimeSpan オブジェクトが無効であること、つまりその値が正しくない可能性があることを示します。

  • COleDateTimeSpan::null この COleDateTimeSpan オブジェクトが null であること、つまりこのオブジェクトに値が指定されていないことを示します。 (これは、C++ の NULL ではなく、データベースで "値がない" ことを意味する "null" です。)

COleDateTimeSpan オブジェクトの状態は、次の場合に無効になります。

  • このオブジェクトで、算術代入演算 (つまり += または -=) の間にオーバーフローまたはアンダーフローが発生した場合。

  • このオブジェクトに無効な値が割り当てられた場合。

  • このオブジェクトの状態が、SetStatus を使用して明示的に無効に設定された場合。

状態を無効に設定する可能性のある演算の詳細については、「COleDateTimeSpan::operator +、-」と「COleDateTimeSpan::operator +=、-=」を参照してください。

注意事項

このデータ メンバーは、高度なプログラミング状況のためのものです。 インライン メンバー関数 GetStatus と SetStatus を使用する必要があります。 このデータ メンバーの明示的な設定に関する他の注意点については、SetStatus を参照してください。

COleDateTimeSpan 値の限界の詳細については、記事「日付と時刻: Automation のサポート」を参照してください。

COleDateTimeSpan::operator =

COleDateTimeSpan 値をコピーします。

COleDateTimeSpan& operator=(double dblSpanSrc) throw();

解説

このオーバーロードされた代入演算子は、ソースの日数/時間間隔値をこの COleDateTimeSpan オブジェクトにコピーします。

COleDateTimeSpan::operator +、-

COleDateTimeSpan 値を加算、減算、符号変更します。

COleDateTimeSpan operator+(const COleDateTimeSpan& dateSpan) const throw();
COleDateTimeSpan operator-(const COleDateTimeSpan& dateSpan) const throw();
COleDateTimeSpan operator-() const throw();

解説

最初の 2 つの演算子では、日数/時間間隔値の加算と減算を実行できます。 3 つ目では、日数/時間間隔値の符号を変更できます。

いずれかのオペランドが null の場合、結果の COleDateTimeSpan 値の状態は null になります。

いずれかのオペランドが無効で、もう一方が null ではない場合、結果の COleDateTimeSpan 値の状態は無効です。

有効、無効、および null の状態値の詳細については、m_status メンバー変数を参照してください。

例

COleDateTimeSpan ts1(3, 1, 5, 12); // 3 days, 1 hour, 5 min, and 12 sec
COleDateTimeSpan ts2(100.0 / (24 * 3600.0)); // 100 seconds
COleDateTimeSpan ts3 = ts1 + ts2;
ASSERT(ts3.GetSeconds() == 52); // 6 mins, 52 secs   

COleDateTimeSpan::operator +=、-=

COleDateTimeSpan 値とこの COleDateTimeSpan 値の間で加算と減算を行います。

COleDateTimeSpan& operator+=(const COleDateTimeSpan dateSpan) throw();
COleDateTimeSpan& operator-=(const COleDateTimeSpan dateSpan) throw();

解説

これらの演算子を使用すると、この COleDateTimeSpan オブジェクトの日数/時間間隔値の加算と減算を実行できます。 いずれかのオペランドが null の場合、結果の COleDateTimeSpan 値の状態は null になります。

いずれかのオペランドが無効で、もう一方が null ではない場合、結果の COleDateTimeSpan 値の状態は無効です。

有効、無効、および null の状態値の詳細については、m_status メンバー変数を参照してください。

例

COleDateTimeSpan ts1(10.0); // 10 days
COleDateTimeSpan ts2(100.0); // 100 days
ts2 -= ts1;
ASSERT(ts2.GetTotalDays() == 90);   

COleDateTimeSpan::operator double

この COleDateTimeSpan 値を double に変換します。

operator double() const throw();

解説

この演算子は、この COleDateTimeSpan 値を浮動小数点数の日数として返します。

COleDateTimeSpan::SetDateTimeSpan

この日数/時間間隔値の値を設定します。

void SetDateTimeSpan(LONG lDays, int nHours, int nMins, int nSecs) throw();

パラメーター

lDays、nHours、nMins、nSecs
この COleDateTimeSpan オブジェクトにコピーされる日数と時間間隔の値を示します。

解説

COleDateTimeSpan オブジェクトの値を照会する関数については、次のメンバー関数を参照してください。

例

COleDateTimeSpan spanOne;
COleDateTimeSpan spanTwo;
spanOne.SetDateTimeSpan(0, 2, 45, 0);  // 2 hours and 45 seconds
spanTwo.SetDateTimeSpan(0, 3, -15, 0); // 2 hours and 45 seconds   

COleDateTimeSpan::SetStatus

この COleDateTimeSpan オブジェクトの状態 (有効性) を設定します。

void SetStatus(DateTimeSpanStatus status) throw();

パラメーター

status
この COleDateTimeSpan オブジェクトの新しい状態値。

解説

Status パラメーターの値は、DateTimeSpanStatus クラス内で定義されている COleDateTimeSpan 列挙型によって定義されています。

enum DateTimeSpanStatus{
   valid = 0,
   invalid = 1,
   null = 2,
   };

これらの状態値の簡単な説明については、次の一覧を参照してください。

  • COleDateTimeSpan::valid この COleDateTimeSpan オブジェクトが有効であることを示します。

  • COleDateTimeSpan::invalid この COleDateTimeSpan オブジェクトが無効であること、つまりその値が正しくない可能性があることを示します。

  • COleDateTimeSpan::null この COleDateTimeSpan オブジェクトが null であること、つまりこのオブジェクトに値が指定されていないことを示します。 (これは、C++ の NULL ではなく、データベースで "値がない" ことを意味する "null" です。)

    注意事項

    この関数は、高度なプログラミング状況のためのものです。 この関数では、このオブジェクト内のデータは変更されません。 通常は、状態を null または invalid に設定するために使用されます。 なお、代入演算子 (operator =) と SetDateTimeSpan では、ソースの値に基づいてオブジェクトの状態が設定されます。

例

// if the person is not still in school, set days to graduation to null
if (!m_bStillInSchool || m_dtDateOfGraduation.GetStatus() == COleDateTime::null)
   m_dtsDaysToGraduation.SetStatus(COleDateTimeSpan::null);   

関連項目

COleDateTime クラス
CTime クラス
CTimeSpan クラス
階層図
ATL/MFC 共有クラス