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
値が関与します。 これらのクラス間の関係は、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
値の状態。
解説
戻り値は、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 +=、-=」を参照してください。
注意事項
このデータ メンバーは、高度なプログラミング状況のためのものです。 インライン メンバー関数 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 パラメーターの値は、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);