次の方法で共有


COleDateTime クラス

OLE オートメーションで使用される DATE データ型をカプセル化します。

構文

class COleDateTime

メンバー

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

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

パブリック メソッド

名前 説明
COleDateTime::Format COleDateTime オブジェクトの書式設定された文字列表現を生成します。
COleDateTime::GetAsDBTIMESTAMP COleDateTime オブジェクトの日時を DBTIMESTAMP データ構造体として取得するには、このメソッドを呼び出します。
COleDateTime::GetAsSystemTime COleDateTime オブジェクトの日時を SYSTEMTIME データ構造体として取得するには、このメソッドを呼び出します。
COleDateTime::GetAsUDATE COleDateTime の時刻を UDATE データ構造体として取得するには、このメソッドを呼び出します。
COleDateTime::GetCurrentTime 現在の時刻を表す COleDateTime オブジェクトを作成します (静的メンバー関数)。
COleDateTime::GetDay この COleDateTime オブジェクトが表す日 (1 から 31) を返します。
COleDateTime::GetDayOfWeek この COleDateTime オブジェクトが表す曜日 (日曜日 = 1) を返します。
COleDateTime::GetDayOfYear この COleDateTime オブジェクトが表す年間通算日 (1 月 1 日 = 1) を返します。
COleDateTime::GetHour この COleDateTime オブジェクトが表す時 (0 から 23) を返します。
COleDateTime::GetMinute この COleDateTime オブジェクトが表す分 (0 から 59) を返します。
COleDateTime::GetMonth この COleDateTime オブジェクトが表す月 (1 から 12) を返します。
COleDateTime::GetSecond この COleDateTime オブジェクトが表す秒 (0 から 59) を返します。
COleDateTime::GetStatus この COleDateTime オブジェクトの状態 (有効性) を取得します。
COleDateTime::GetYear この COleDateTime オブジェクトが表す年を返します。
COleDateTime::P arseDateTime 文字列から日付と時刻の値を読み取り、COleDateTime の値を設定します。
COleDateTime::SetDate この COleDateTime オブジェクトの値を、指定した日付のみの値に設定します。
COleDateTime::SetDateTime この COleDateTime オブジェクトの値を、指定した日付と時刻の値に設定します。
COleDateTime::SetStatus この COleDateTime オブジェクトの状態 (有効性) を設定します。
COleDateTime::SetTime この COleDateTime オブジェクトの値を、指定した時刻のみの値に設定します。

パブリック演算子

名前 説明
COleDateTime::operator ==、COleDateTime::operator < など 2 つの COleDateTime 値を比較します。
COleDateTime::operator +、COleDateTime::operator - COleDateTime の値を加算および減算します。
COleDateTime::operator +=、COleDateTime::operator -= この COleDateTime オブジェクトから COleDateTime 値を減算したり、それらを加算したりします。
COleDateTime::operator = COleDateTime 値をコピーします。
COleDateTime::operator DATE、COleDateTime::operator Date* COleDateTime 値を DATE または DATE* に変換します。

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

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

解説

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

OLE オートメーションの VARIANT データ型に使用できる型の 1 つです。 COleDateTime 値は、絶対日時の値を表します。

DATE 型は、浮動小数点値として実装されます。 日数は、1899 年 12 月 30 日の午前 0 時から測定されます。 次の表は、いくつかの日付とそれに関連する値を示したものです。

1899 年 12 月 29 日午前 0 時 -1.0
1899 年 12 月 29 日午前 6 時 -1.25
1899 年 12 月 30 日午前 0 時 0.0
1899 年 12 月 31 日午前 0 時 1.0
1900 年 1 月 1 日午前 6 時 2.25

注意事項

上の表で、日の値は 1899 年 12 月 30 日の午前 0 時より前は負になりますが、時の値は負になりません。 たとえば、午前 6 時は、日を表す整数が正 (1899 年 12 月 30 日より後) か負 (1899 年 12 月 30 日より前) かに関係なく、常に小数部の値 0.25 で表されます。 つまり、単純な浮動小数点比較では、1899 年 12 月 29 日午前 6:00 を表す COleDateTime は、同じ日の午前 7 時を表す値よりとして、誤って並べ替えられます。

COleDateTime クラスでは、100 年 1 月 1 日から 9999 年 12 月 31 日まで処理されます。 COleDateTime クラスではグレゴリオ暦が使用されます。ユリウス暦の日付はサポートされていません。 COleDateTime では夏時間は無視されます。 (「日付と時刻: Automation のサポート」を参照)

%y 形式を使用して 2 桁の年を取得できるのは、1900 年以降の日付のみです。 1900 年より前の日付に %y 形式を使用すると、コードで ASSERT エラーが発生します。

この型は、日付のみまたは時刻のみの値を表すためにも使用されます。 慣例により、時刻のみの値には日付 0 (1899 年 12 月 30 日) が使用され、日付のみの値には時刻 00:00 (午前 0 時) が使用されます。

100 未満の日付を使用して COleDateTime オブジェクトを作成した場合、その日付は受け入れられますが、その後の GetYearGetMonthGetDayGetHourGetMinuteGetSecond の呼び出しは失敗して -1 が返されます。 以前は 2 桁の日付を使用できましたが、MFC 4.2 以降では、日付は 100 以上である必要があります。

問題を回避するには、4 桁の日付を指定してください。 次に例を示します。

COleDateTime mytime(1996, 1, 1, 0, 0, 0); 

COleDateTime 値の基本的な算術演算には、コンパニオンクラス COleDateTimeSpan を使用します。 COleDateTimeSpan 値では時間間隔を定義します。 これらのクラス間の関係は、CTimeCTimeSpan の間の関係に似ています。

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

要件

ヘッダー: ATLComTime.h

COleDateTime の関係演算子

比較演算子。

bool operator==(const COleDateTime& date) const throw();
bool operator!=(const COleDateTime& date) const throw();
bool operator<(const COleDateTime& date) const throw();
bool operator>(const COleDateTime& date) const throw();
bool operator<=(const COleDateTime& date) const throw();
bool operator>=(const COleDateTime& date) const throw();

パラメーター

日付
比較される COleDateTime オブジェクト。

解説

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

COleDateTime dateOne(1995, 3, 15, 12, 0, 0); // 15 March 1995 12 noon
COleDateTime dateTwo(dateOne);             // 15 March 1995 12 noon
BOOL b;
b = dateOne == dateTwo;                    // TRUE
b = dateOne < dateTwo;                     // FALSE, same value
b = dateOne > dateTwo;                     // FALSE, same value
b = dateOne <= dateTwo;                    // TRUE, same value
b = dateOne >= dateTwo;                    // TRUE, same value   

dateTwo.SetStatus(COleDateTime::invalid);
b = dateOne == dateTwo;                    // FALSE, different status
b = dateOne != dateTwo;                    // TRUE, different status

演算子 >=<=>< は、COleDateTime オブジェクトが null に設定されている場合にアサートします。

VARIANT v = {};
v.vt = VT_NULL;
COleDateTime t1(v);
COleDateTime t2(v);
t1 = t1 + t2;

COleDateTime::COleDateTime

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

COleDateTime() throw();
COleDateTime(const VARIANT& varSrc) throw();
COleDateTime(DATE dtSrc) throw();
COleDateTime(time_t timeSrc) throw();
COleDateTime(__time64_t timeSrc) throw();
COleDateTime(const SYSTEMTIME& systimeSrc) throw();
COleDateTime(const FILETIME& filetimeSrc) throw();

COleDateTime(int nYear,
    int nMonth,
    int nDay,
    int nHour,
    int nMin,
    int nSec) throw();

COleDateTime(WORD wDosDate,
    WORD wDosTime) throw();
COleDateTime(const DBTIMESTAMP& timeStamp) throw();

パラメーター

dateSrc
新しい COleDateTime オブジェクトにコピーされる既存の COleDateTime オブジェクト。

varSrc
日付と時刻の値 (VT_DATE) に変換されて新しい VARIANT オブジェクトにコピーされる既存の COleVariant データ構造体 (場合によっては COleDateTime オブジェクト)。

dtSrc
新しい DATE オブジェクトにコピーされる日付と時刻 (COleDateTime) の値。

timeSrc
日付と時刻の値に変換されて新しい time_t オブジェクトにコピーされる __time64_t または COleDateTime の値。

systimeSrc
日付と時刻の値に変換されて新しい SYSTEMTIME オブジェクトにコピーされる COleDateTime 構造体。

filetimeSrc
日付と時刻の値に変換されて新しい FILETIME オブジェクトにコピーされる COleDateTime 構造体。 FILETIME では協定世界時 (UTC) が使用されるため、構造体で現地日時を渡すと、結果は正しくありません。 詳細については、Windows SDK の「ファイル時間」を参照してください。

nYearnMonthnDaynHournMinnSec
新しい COleDateTime オブジェクトにコピーする日付と時刻の値を示します。

wDosDatewDosTime
日付と時刻の値に変換されて新しい COleDateTime オブジェクトにコピーされる MS-DOS の日付と時刻の値。

タイムスタンプ
現在の現地日時が含まれる DBTimeStamp 構造体への参照。

解説

これらのすべてのコンストラクターで、指定した値に初期化された新しい COleDateTime オブジェクトが作成されます。 次の表は、日付と時刻の各コンポーネントの有効な範囲です。

日付と時刻のコンポーネント 有効な範囲
100 - 9999
0 - 12
0 - 31
時間 0 - 23
0 - 59
0 - 59

日コンポーネントの実際の上限は、月と年のコンポーネントによって異なることに注意してください。 詳細については、メンバー関数 SetDateSetDateTime を参照してください。

各コンストラクターの簡単な説明を次に示します。

  • COleDateTime( )0 (1899 年 12 月 30 日午前 0 時) に初期化されたCOleDateTime オブジェクトを構築します。

  • COleDateTime( dateSrc )既存のCOleDateTime オブジェクトからCOleDateTime オブジェクトを構築します。

  • COleDateTime( varSrc)COleDateTime オブジェクトを構築します。 VARIANT構造体または COleVariant オブジェクトを日付/時刻 (VT_DATE) 値に変換しようとします。 この変換が成功した場合、変換後の値を新しい COleDateTime オブジェクトにコピーします。 そうでない場合は、COleDateTime オブジェクトの値は 0 (1899 年 12 月 30 日午前 0 時) に設定され、その状態は無効になります。

  • COleDateTime( dtSrc )COleDateTime値からDATE オブジェクトを構築します。

  • COleDateTime( timeSrc )COleDateTime値からtime_t オブジェクトを構築します。

  • COleDateTime( systimeSrc)COleDateTime値からSYSTEMTIME オブジェクトを構築します。

  • COleDateTime( filetimeSrc )COleDateTime値からFILETIME オブジェクトを構築します。 . FILETIME では協定世界時 (UTC) が使用されるため、構造体で現地日時を渡すと、結果は正しくありません。 詳細については、Windows SDK の「ファイル時間」を参照してください。

  • COleDateTime( nYearnMonthnDaynHournMinnSec)指定した数値からCOleDateTime オブジェクトを構築します。

  • COleDateTime( wDosDatewDosTime)指定した MS-DOS の日付と時刻の値からCOleDateTime オブジェクトを構築します。

time_t データ型の詳細については、"ランタイム ライブラリ リファレンス" の time 関数を参照してください。

詳細については、Windows SDK の SYSTEMTIME および FILETIME 構造体を参照してください。

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

DBTIMESTAMP パラメーターを使用するコンストラクターは、OLEDB.h がインクルードされている場合にのみ使用できます。

time_t osBinaryTime;   // C run-time time (defined in <time.h>)
time(&osBinaryTime);   // Get the current time from the 
                     // operating system.

COleDateTime time1;   // initialized to 00:00am, 30 December 1899
                     // (and m_nStatus is valid!)

COleDateTime time2 = time1; // Copy constructor
COleDateTime time3(osBinaryTime);   // from time_t
COleDateTime time4(1999, 3, 19, 22, 15, 0); // 10:15PM March 19, 1999

SYSTEMTIME sysTime;   // Win32 time information
GetSystemTime(&sysTime);

COleDateTime time5(sysTime);    

COleDateTime::Format

日付と時刻の値の書式設定された表現を作成します。

CString Format(DWORD dwFlags = 0,  LCID lcid = LANG_USER_DEFAULT) const;
CString Format(LPCTSTR lpszFormat) const;
CString Format(UINT nFormatID) const;

パラメーター

dwFlags
次のいずれかのロケール フラグを示します。

  • LOCALE_NOUSEROVERRIDE - ユーザーのカスタム設定ではなく、システムの既定のロケール設定を使用します。

  • VAR_TIMEVALUEONLY - 解析で日付の部分を無視します。

  • VAR_DATEVALUEONLY - 解析で時刻の部分を無視します。

lcid する
変換に使用するロケール ID を示します。 言語識別子の詳細については、「言語識別子」を参照してください。

lpszFormat
printf の書式設定文字列に似た書式設定文字列。 パーセント (%) 記号の前にある各書式設定コードは、対応する COleDateTime コンポーネントに置き換えられます。 書式設定文字列内の他の文字は、返される文字列にそのままコピーされます。 詳細については、strftime ランタイム関数を参照してください。 Format の書式設定コードの値と意味は次のとおりです。

  • %H 現在の日の時

  • %M 現在の時の分

  • %S 現在の分の秒

  • %% パーセント記号

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

戻り値

書式設定された日付と時刻の値が格納されている CString

解説

この COleDateTime オブジェクトの状態が null の場合、戻り値は空の文字列になります。 状態が無効である場合、戻される文字列は文字列リソース ATL_IDS_DATETIME_INVALID によって指定されます。

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

Format( dwFlags, lcid)
この形式では、日付と時刻の言語仕様 (ロケール ID) を使用して値の書式が設定されます。 既定のパラメーターを使用すると、この形式では日付と時刻が出力されます。ただし、時刻部分が 0 (深夜) である場合は日付のみが出力され、日付部分が 0 (1899 年 12 月 30 日) の場合は時刻だけが出力されます。 日付と時刻の値が 0 (1899 年 12 月 30 日午前 0 時) の場合、既定のパラメーターのこの形式では午前 0 時が出力されます。

Format( lpszFormat)
この形式では、printf のように、前にパーセント記号 (%) の付いた特別な書式設定コードを含む書式設定文字列を使用して、値の書式が設定されます。 書式設定文字列は、パラメーターとして関数に渡されます。 書式設定コードの詳細については、ランタイム ライブラリ リファレンスの strftime、wcsftime を参照してください。

Format( nFormatID)
この形式では、printf のように、前にパーセント記号 (%) の付いた特別な書式設定コードを含む書式設定文字列を使用して、値の書式が設定されます。 書式設定文字列はリソースです。 この文字列リソースの ID が、パラメーターとして渡されます。 書式設定コードの詳細については、"ランタイム ライブラリ リファレンス" の strftime、wcsftime を参照してください。

COleDateTime t(1999, 3, 19, 22, 15, 0);

CString str = t.Format(_T("%A, %B %d, %Y"));
ASSERT(str == _T("Friday, March 19, 1999"));   

COleDateTime::GetAsDBTIMESTAMP

COleDateTime オブジェクトの日時を DBTIMESTAMP データ構造体として取得するには、このメソッドを呼び出します。

bool GetAsDBTIMESTAMP(DBTIMESTAMP& timeStamp) const throw();

パラメーター

タイムスタンプ
DBTimeStamp 構造体への参照。

戻り値

正常終了した場合は 0 以外を返します。それ以外の場合は 0 を返します。

解説

結果の日時は、参照されている timeStamp 構造体に格納されます。 この関数によって初期化された DBTIMESTAMP データ構造体の fraction メンバーは、0 に設定されます。

COleDateTime t = COleDateTime::GetCurrentTime();
DBTIMESTAMP ts;
t.GetAsDBTIMESTAMP(ts); // retrieves the time in t into the ts structure

COleDateTime::GetAsSystemTime

COleDateTime オブジェクトの日時を SYSTEMTIME データ構造体として取得するには、このメソッドを呼び出します。

bool GetAsSystemTime(SYSTEMTIME& sysTime) const throw();

パラメーター

sysTime
オブジェクトから変換された日時値を受け取るための COleDateTime 構造体への参照。

戻り値

成功した場合は TRUE を返し、変換が失敗した場合や COleDateTime オブジェクトが NULL または無効の場合は FALSE を返します。

解説

GetAsSystemTime は、結果の日時を参照されている sysTime オブジェクトに格納します。 この関数によって初期化された SYSTEMTIME データ構造体の wMilliseconds メンバーは、0 に設定されます。

オブジェクトに保持されている状態情報の詳細については、COleDateTimeGetStatus を参照してください。

COleDateTime::GetAsUDATE

COleDateTime オブジェクトの日時を UDATE データ構造体として取得するには、このメソッドを呼び出します。

bool GetAsUDATE(UDATE& uDate) const throw();

パラメーター

uDate
UDATE オブジェクトから変換された日時値を受け取るための COleDateTime 構造体への参照。

戻り値

成功した場合は TRUE を返し、変換が失敗した場合や COleDateTime オブジェクトが NULL または無効の場合は FALSE を返します。

解説

UDATE 構造体は、"アンパックされた" 日付を表します。

COleDateTime::GetCurrentTime

現在の日時値を取得するには、この静的メンバー関数を呼び出します。

static COleDateTime WINAPI GetCurrentTime() throw();

// example for COleDateTime::GetCurrentTime
COleDateTime dateTest;
   // dateTest value = midnight 30 December 1899

dateTest = COleDateTime::GetCurrentTime();
   // dateTest value = current date and time

// a second example for COleDateTime::GetCurrentTime
// Since GetCurrentTime() is a static member, you can use it in
// a constructor:

COleDateTime t1 = COleDateTime::GetCurrentTime();
COleDateTime t2(COleDateTime::GetCurrentTime());

// Or in a normal assignment operator

COleDateTime t3;
t3 = COleDateTime::GetCurrentTime();

// or even in an expression

 if (COleDateTime::GetCurrentTime().GetDayOfWeek() == 6)
    _tprintf(_T("Thank Goodness it is Friday!\n\n"));   

COleDateTime::GetDay

この日時値で表される月の日付を取得します。

int GetDay() const throw();

戻り値

この COleDateTime オブジェクトの値で表される月の日付、または日を取得できなかった場合は COleDateTime::error

解説

有効な戻り値の範囲は 1 から 31 です。

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

COleDateTime t(1999, 3, 19, 22, 15, 0);  // 10:15PM March 19, 1999
ASSERT(t.GetDay() == 19);
ASSERT(t.GetMonth() == 3);
ASSERT(t.GetYear() == 1999);   

COleDateTime::GetDayOfWeek

この日時値で表される曜日を取得します。

int GetDayOfWeek() const throw();

戻り値

この COleDateTime オブジェクトの値で表される曜日、または曜日を取得できなかった場合は COleDateTime::error

解説

有効な戻り値の範囲は 1 から 7 です。1 は日曜日、2 は月曜日のようになります。

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

COleDateTime t(1999, 3, 19, 22, 15, 0); // 10:15PM March 19, 1999
ASSERT(t.GetDayOfWeek() == 6);          // it's a Friday   

COleDateTime::GetDayOfYear

この日時値で表される年の通算日を取得します。

int GetDayOfYear() const throw();

戻り値

この COleDateTime オブジェクトの値で表される年の通算日、または年の通算日を取得できなかった場合は COleDateTime::error

解説

有効な戻り値の範囲は 1 から 366 で、1 月 1 日が 1 です。

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

COleDateTime t(1999, 3, 19, 22, 15, 0); // 10:15PM March 19, 1999
ASSERT(t.GetDayOfYear() == 78);         // 78th day of that year   

COleDateTime::GetHour

この日時値によって表される時を取得します。

int GetHour() const throw();

戻り値

この COleDateTime オブジェクトの値で表される時、または時を取得できなかった場合は COleDateTime::error

解説

有効な戻り値の範囲は 0 から 23 です。

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

COleDateTime t(1999, 3, 19, 22, 15, 0);  // 10:15PM March 19, 1999
ASSERT(t.GetSecond() == 0);
ASSERT(t.GetMinute() == 15);
ASSERT(t.GetHour() == 22);   

COleDateTime::GetMinute

この日時値によって表される分を取得します。

int GetMinute() const throw();

戻り値

この COleDateTime オブジェクトの値で表される分、または分を取得できなかった場合は COleDateTime::error

解説

有効な戻り値の範囲は 0 から 59 です。

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

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

COleDateTime::GetMonth

この日時値で表される月を取得します。

int GetMonth() const throw();

戻り値

この COleDateTime オブジェクトの値で表される月、または月を取得できなかった場合は COleDateTime::error

解説

有効な戻り値の範囲は 1 から 12 です。

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

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

COleDateTime::GetSecond

この日時値で表される秒を取得します。

int GetSecond() const throw();

戻り値

この COleDateTime オブジェクトの値で表される秒、または秒を取得できなかった場合は COleDateTime::error

解説

有効な戻り値の範囲は 0 から 59 です。

COleDateTime クラスでは、うるう秒はサポートされていません。

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

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

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

COleDateTime::GetStatus

指定された COleDateTime オブジェクトの状態 (有効性) を取得します。

DateTimeStatus GetStatus() const throw();

戻り値

この COleDateTime 値の状態を返します。 既定値で作成された GetStatus オブジェクトで COleDateTime を呼び出すと、有効が返されます。 null に設定されたコンストラクターで初期化された GetStatus オブジェクトで COleDateTime を呼び出すと、GetStatus は null を返します。

解説

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

enum DateTimeStatus
{
   error = -1,
   valid = 0,
   invalid = 1,    // Invalid date (out of range, etc.)
   null = 2,       // Literally has no value
};

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

  • COleDateTime::error 日時値の一部を取得しようとしているときにエラーが発生したことを示します。

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

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

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

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

  • その値が、日時値に変換できなかった VARIANT または COleVariant の値から設定されている場合。

  • その値が、有効な日時値に変換できなかった time_tSYSTEMTIME、または FILETIME の値から設定されている場合。

  • その値が、無効なパラメーター値を使用して SetDateTime によって設定されている場合。

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

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

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

状態を無効に設定する可能性のある操作の詳細については、次のメンバー関数を参照してください。

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

COleDateTime t;

// this one is a leap year
t.SetDateTime(2000, 2, 29, 5, 0, 0);
ASSERT(t.GetStatus() == COleDateTime::valid);

// this date isn't valid
t.SetDateTime(1925, 2, 30, 5, 0, 0);
ASSERT(t.GetStatus() == COleDateTime::invalid);

// the only way to set null is to set null!
t.SetStatus(COleDateTime::null);
ASSERT(t.GetStatus() == COleDateTime::null);   

COleDateTime::GetYear

この日時値によって表される年を取得します。

int GetYear() const throw();

戻り値

この COleDateTime オブジェクトの値で表される年、または年を取得できなかった場合は COleDateTime::error

解説

有効な戻り値の範囲は 100 から 9999 で、世紀が含まれます。

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

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

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

COleDateTime::m_dt

この DATE オブジェクトの基になる COleDateTime 構造体。

DATE m_dt;

解説

注意事項

この関数から返されるポインターによってアクセスされる DATE オブジェクトの値を変更すると、この COleDateTime オブジェクトの値が変更されます。 この COleDateTime オブジェクトの状態は変更されません。

DATE オブジェクトの実装の詳細については、記事「日付と時刻: Automation のサポート」を参照してください。

COleDateTime::m_status

この COleDateTime オブジェクトの状態を格納します。

DateTimeStatus m_status;

解説

このデータ メンバーの型は、DateTimeStatus クラス内で定義されている列挙型 COleDateTime です。 詳細については、COleDateTime::GetStatus を参照してください。

注意事項

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

COleDateTime::operator =

COleDateTime 値をコピーします。

COleDateTime& operator=(const VARIANT& varSrc) throw();
COleDateTime& operator=(DATE dtSrc) throw();
COleDateTime& operator=(const time_t& timeSrc) throw();
COleDateTime& operator=(const __time64_t& timeSrc) throw();
COleDateTime& operator=(const SYSTEMTIME& systimeSrc) throw();
COleDateTime& operator=(const FILETIME& filetimeSrc) throw();
COleDateTime& operator=(const UDATE& uDate) throw();

解説

これらのオーバーロードされた代入演算子は、ソースの日時値をこの COleDateTime オブジェクトにコピーします。 これらのオーバーロードされた代入演算子の簡単な説明を次に示します。

  • operator =(dateSrc) オペランドの値と状態は、この COleDateTime オブジェクトにコピーされます。

  • operator =(varSrc)VARIANT 値 (または COleVariant オブジェクト) から日付/時刻 (VT_DATE) への変換が成功した場合、変換された値はこの COleDateTime オブジェクトにコピーされ、その状態は有効に設定されます。 変換が成功しなかった場合は、このオブジェクトの値は 0 (1899 年 12 月 30 日午前 0 時) に設定され、その状態は無効になります。

  • operator =(dtSrc)DATE 値がこの COleDateTime オブジェクトにコピーされ、その状態が有効に設定されます。

  • operator =(timeSrc)time_t または __time64_t 値が変換され、この COleDateTime オブジェクトにコピーされます。 変換が成功した場合、このオブジェクトの状態は有効に設定されます。失敗した場合は、無効に設定されます。

  • operator =(systimeSrc)SYSTEMTIME 値がこの COleDateTime オブジェクトにコピーされます。 変換が成功した場合、このオブジェクトの状態は有効に設定されます。失敗した場合は、無効に設定されます。

  • operator =(uDate)UDATE 値がこの COleDateTime オブジェクトに変換されてコピーされます。 変換が成功した場合、このオブジェクトの状態は有効に設定されます。失敗した場合は、無効に設定されます。 UDATE 構造体は、"アンパックされた" 日付を表します。 詳細については、関数 VarDateFromUdate を参照してください。

  • operator =(filetimeSrc)FILETIME 値が変換され、この COleDateTime オブジェクトにコピーされます。 変換が成功した場合、このオブジェクトの状態は有効に設定されます。それ以外の場合は、無効に設定されます。 FILETIME では協定世界時 (UTC) が使用されます。そのため、UTC 時刻を構造体に渡すと、結果は UTC 時刻から現地時刻に変換され、バリアント時刻として格納されます。 この動作は、Visual C++ 6.0 および Visual C++.NET 2003 SP2 と同じです。 詳細については、Windows SDK の「ファイル時間」を参照してください。

詳細については、Windows SDK の VARIANT エントリをご覧ください。

time_t データ型の詳細については、"ランタイム ライブラリ リファレンス" の time 関数を参照してください。

詳細については、Windows SDK の SYSTEMTIME および FILETIME 構造体を参照してください。

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

COleDateTime::operator +、-

ColeDateTime の値を加算および減算します。

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

解説

COleDateTime オブジェクトは絶対時刻を表します。 COleDateTimeSpan オブジェクトは相対時刻を表します。 最初の 2 つの演算子を使用すると、COleDateTimeSpan 値からの COleDateTime 値の減算およびそれらの加算を行うことができます。 3 番目の演算子を使用すると、ある COleDateTime 値を別の値から減算して、COleDateTimeSpan 値を生成することができます。

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

結果の COleDateTime 値が許容される値の範囲外になる場合、その COleDateTime 値の状態は無効になります。

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

+ オブジェクトが null に設定されている場合、- および COleDateTime 演算子はアサートします。 例については、「COleDateTime の関係演算子」を参照してください。

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

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

COleDateTime t1(1999, 3, 19, 22, 15, 0); // 10:15PM March 19, 1999
COleDateTime t2(1999, 3, 20, 22, 15, 0); // 10:15PM March 20, 1999

// Subtract 2 COleDateTimes
COleDateTimeSpan ts = t2 - t1;

// one day is 24 * 60 * 60 == 86400 seconds
ASSERT(ts.GetTotalSeconds() == 86400L);

// Add a COleDateTimeSpan to a COleDateTime.
ASSERT((t1 + ts) == t2);

// Subtract a COleDateTimeSpan from a COleDateTime.
ASSERT((t2 - ts) == t1);   

COleDateTime::operator +=、-=

この ColeDateTime オブジェクトから COleDateTime 値を減算したり、それらを加算したりします。

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

解説

これらの演算子を使用すると、この COleDateTimeSpan から COleDateTime 値を減算したり、それらを加算したりできます。 いずれかのオペランドが null の場合、結果の COleDateTime 値の状態は null になります。

結果の COleDateTime 値が許容される値の範囲外になる場合、この COleDateTime 値の状態は無効に設定されます。

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

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

+= オブジェクトが null に設定されている場合、-= および COleDateTime 演算子はアサートします。 例については、「COleDateTime の関係演算子」を参照してください。

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

COleDateTime::operator DATE

ColeDateTime 値を DATE に変換します。

operator DATE() const throw();

解説

この演算子は、この DATE オブジェクトから値がコピーされた COleDateTime オブジェクトを返します。 DATE オブジェクトの実装の詳細については、記事「日付と時刻: Automation のサポート」を参照してください。

DATE オブジェクトが null に設定されている場合、COleDateTime 演算子はアサートします。 例については、「COleDateTime の関係演算子」を参照してください。

COleDateTime::P arseDateTime

文字列を解析して、日付と時刻の値を読み取ります。

bool ParseDateTime(
    LPCTSTR lpszDate,
    DWORD dwFlags = 0,
    LCID lcid = LANG_USER_DEFAULT) throw();

パラメーター

lpszDate
解析対象の null で終わる文字列へのポインター。 詳細については、「解説」を参照してください。

dwFlags
ロケールの設定と解析のためのフラグを示します。 次のフラグの 1 つまたは複数:

  • LOCALE_NOUSEROVERRIDE - ユーザーのカスタム設定ではなく、システムの既定のロケール設定を使用します。

  • VAR_TIMEVALUEONLY - 解析で日付の部分を無視します。

  • VAR_DATEVALUEONLY - 解析で時刻の部分を無視します。

lcid する
変換に使用するロケール ID を示します。

戻り値

文字列が日時値に正常に変換された場合は TRUE を返し、それ以外の場合は FALSE を返します。

解説

文字列が日時値に正常に変換された場合、この COleDateTime オブジェクトの値はその値に設定され、状態は有効になります。

年の値は、100 から 9999 の範囲である必要があります (両端を含む)。

lpszDate パラメーターには、さまざまな形式を使用できます。 たとえば、次の文字列には、許容される日付と時刻の書式が含まれています。

"25 January 1996"

"8:30:00"

"20:30:00"

"January 25, 1996 8:30:00"

"8:30:00 Jan. 25, 1996"

"1/25/1996 8:30:00" // always specify the full year, even in a 'short date' format

ロケール ID は、文字列形式を日時値に変換できるかどうかにも影響します。

VAR_DATEVALUEONLY の場合は、時刻の値が 0 つまり午前 0 時に設定されます。 VAR_TIMEVALUEONLY の場合は、日付の値が 0 つまり 1899 年 12 月 30 日に設定されます。

文字列を日時値に変換できなかった場合、または数値がオーバーフローした場合、この COleDateTime オブジェクトの状態は無効になります。

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

COleDateTime::SetDate

この COleDateTime オブジェクトの日付を設定します。

int SetDate(
    int nYear,
    int nMonth,
    int nDay) throw();

パラメーター

nYear
この COleDateTime オブジェクトにコピーする年を示します。

nMonth
この COleDateTime オブジェクトにコピーする月を示します。

nDay
この COleDateTime オブジェクトにコピーする日を示します。

戻り値

この COleDateTime オブジェクトの値が正常に設定された場合は 0。それ以外の場合は 1。 この戻り値は、DateTimeStatus 列挙型に基づいて行います。 詳細については、SetStatus メンバー関数を参照してください。

解説

日付は、指定した値に設定されます。 時刻は、0 (午前 0 時) に設定されます。

パラメーター値の範囲については、次の表を参照してください。

パラメーター 境界
nYear 100 - 9999
nMonth 1 - 12
nDay 0 - 31

月の日付がオーバーフローした場合は、翌月の正しい日付に変換され、それに応じて月や年がインクリメントされます。 日の値が 0 の場合は、前月の最後の日を示します。 動作はと SystemTimeToVariantTime 同じです。

パラメーターで指定した日付の値が有効でない場合、このオブジェクトの状態は COleDateTime::invalid に設定されます。 GetStatus を使用して、DATE 値の有効性を確認する必要があります。m_dt の値は変更されないものと思い込まないでください。

日付の値の例を次に示します。

nYear nMonth nDay
2000 2 二十九 2000 年 2 月 29 日
1776 7 4 1776 年 7 月 4 日
1925 4 35 35 April 1925 (無効な日付)
1万 1 1 1 January 10000 (無効な日付)

日付と時刻の両方を設定するには、COleDateTime::SetDateTime を参照してください。

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

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

// set only the date, time set to midnight
dt.SetDate(1999, 3, 19);
ASSERT(dt.GetYear() == 1999);
ASSERT(dt.GetDay() == 19);
ASSERT(dt.GetMonth() == 3);
ASSERT(dt.GetHour() == 0);
ASSERT(dt.GetMinute() == 0);
ASSERT(dt.GetSecond() == 0);

// setting the time only resets the date to 1899!
dt.SetTime(22, 15, 0);
ASSERT(dt.GetYear() == 1899);
ASSERT(dt.GetDay() == 30);
ASSERT(dt.GetMonth() == 12);
ASSERT(dt.GetHour() == 22);
ASSERT(dt.GetMinute() == 15);
ASSERT(dt.GetSecond() == 0);   

COleDateTime::SetDateTime

この COleDateTime オブジェクトの日付と時刻を設定します。

int SetDateTime(
    int nYear,
    int nMonth,
    int nDay,
    int nHour,
    int nMin,
    int nSec) throw();

パラメーター

nYearnMonthnDaynHournMinnSec
この COleDateTime オブジェクトにコピーする日付と時刻のコンポーネントを示します。

戻り値

この COleDateTime オブジェクトの値が正常に設定された場合は 0。それ以外の場合は 1。 この戻り値は、DateTimeStatus 列挙型に基づいて行います。 詳細については、SetStatus メンバー関数を参照してください。

解説

パラメーター値の範囲については、次の表を参照してください。

パラメーター 境界
nYear 100 - 9999
nMonth 1 - 12
nDay 0 - 31
nHour 0 - 23
nMin 0 - 59
nSec 0 - 59

月の日付がオーバーフローした場合は、翌月の正しい日付に変換され、それに応じて月や年がインクリメントされます。 日の値が 0 の場合は、前月の最後の日を示します。 動作は SystemTimeToVariantTime と同じです。

パラメーターで指定した日付または時刻の値が無効である場合、このオブジェクトの状態は無効に設定され、このオブジェクトの値は変更されません。

時刻の値の例を次に示します。

nHour nMin nSec
1 3 3 01:03:03
23 45 0 23:45:00
二十五 30 0 無効
9 六十 0 無効

日付の値の例を次に示します。

nYear nMonth nDay
1995 4 15 1995 年 4 月 15 日
1789 7 14 1789 年 7 月 17 日
1925 2 30 無効
1万 1 1 無効

日付のみを設定するには、COleDateTime::SetDate を参照してください。 時刻のみを設定するには、COleDateTime::SetTime を参照してください。

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

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

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

COleDateTime::SetStatus

この COleDateTime オブジェクトの状態を設定します。

void SetStatus(DateTimeStatus status) throw();

パラメーター

地位
この COleDateTime オブジェクトの新しい状態値。

解説

status パラメーターの値は、DateTimeStatus クラス内で定義されている COleDateTime 列挙型によって定義されています。 詳細については、COleDateTime::GetStatus を参照してください。

注意事項

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

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

COleDateTime::SetTime

この COleDateTime オブジェクトの時刻を設定します。

int SetTime(
    int nHour,
    int nMin,
    int nSec) throw();

パラメーター

nHournMinnSec
この COleDateTime オブジェクトにコピーする時刻のコンポーネントを示します。

戻り値

この COleDateTime オブジェクトの値が正常に設定された場合は 0。それ以外の場合は 1。 この戻り値は、DateTimeStatus 列挙型に基づいて行います。 詳細については、SetStatus メンバー関数を参照してください。

解説

時刻は、指定した値に設定されます。 日付は、0 つまり 1899 年 12 月 30 日に設定されます。

パラメーター値の範囲については、次の表を参照してください。

パラメーター 境界
nHour 0 - 23
nMin 0 - 59
nSec 0 - 59

パラメーターで指定した時刻の値が無効である場合、このオブジェクトの状態は無効に設定され、このオブジェクトの値は変更されません。

時刻の値の例を次に示します。

nHour nMin nSec
1 3 3 01:03:03
23 45 0 23:45:00
二十五 30 0 無効
9 六十 0 無効

日付と時刻の両方を設定するには、COleDateTime::SetDateTime を参照してください。

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

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

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

関連項目

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