次の方法で共有


COleDateTimeSpan クラス

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

構文

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 この COleDateTimeSpan オブジェクトの基になる double を格納します。
COleDateTimeSpan::m_status この COleDateTimeSpan オブジェクトの状態を格納します。

解説

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

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

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

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 オブジェクトにコピーされる日数。

lDaysnHoursnMinsnSecs
新しい 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 値の状態。

解説

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

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

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

double m_span;

解説

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

注意事項

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

COleDateTimeSpan::m_status

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

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 +=、-=」を参照してください。

注意事項

このデータ メンバーは、高度なプログラミング状況のためのものです。 インライン メンバー関数 GetStatusSetStatus を使用する必要があります。 このデータ メンバーの明示的な設定に関する他の注意点については、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();

パラメーター

lDaysnHoursnMinsnSecs
この 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 パラメーターの値は、COleDateTimeSpan クラス内で定義されている DateTimeSpanStatus 列挙型によって定義されています。

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 共有クラス