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::ParseDateTime 文字列から日付と時刻の値を読み取り、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 この COleDateTime オブジェクトの基になる DATE を格納します。
COleDateTime::m_status この COleDateTime オブジェクトの状態を格納します。

解説

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

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

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

Date Value
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 のサポート」を参照)

Note

%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();

パラメーター

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

解説

Note

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) に変換されて新しい COleDateTime オブジェクトにコピーされる既存の VARIANT データ構造体 (場合によっては COleVariant オブジェクト)。

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

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

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

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

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

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

timeStamp
現在の現地日時が含まれる DBTimeStamp 構造体への参照。

解説

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

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

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

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

  • 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)DATE 値から COleDateTime オブジェクトを作成します。

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

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

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

  • COleDateTime(nYear, nMonth, nDay, nHour, nMin, nSec) 指定した数値から COleDateTime オブジェクトを作成します。

  • COleDateTime(wDosDate, wDosTime) 指定した MS-DOS の日付と時刻の値から COleDateTime オブジェクトを作成します。

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

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

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

Note

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();

パラメーター

timeStamp
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 オブジェクトから変換された日時値を受け取るための SYSTEMTIME 構造体への参照。

戻り値

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

解説

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

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

COleDateTime::GetAsUDATE

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

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

パラメーター

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

戻り値

成功した場合は 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 です。

Note

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

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

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

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

COleDateTime::GetStatus

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

DateTimeStatus GetStatus() const throw();

戻り値

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

解説

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

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

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

DATE m_dt;

解説

注意事項

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

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

COleDateTime::m_status

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

DateTimeStatus m_status;

解説

このデータ メンバーの型は、COleDateTime クラス内で定義されている列挙型 DateTimeStatus です。 詳細については、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 つの演算子を使用すると、COleDateTime 値からの COleDateTimeSpan 値の減算およびそれらの加算を行うことができます。 3 番目の演算子を使用すると、ある COleDateTime 値を別の値から減算して、COleDateTimeSpan 値を生成することができます。

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

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

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

COleDateTime オブジェクトが null に設定されている場合、+ および - 演算子はアサートします。 例については、「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();

解説

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

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

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

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

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

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

COleDateTime::operator DATE

ColeDateTime 値を DATE に変換します。

operator DATE() const throw();

解説

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

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

COleDateTime::ParseDateTime

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

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 オブジェクトの値はその値に設定され、状態は有効になります。

Note

年の値は、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 時) に設定されます。

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

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

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

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

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

nYear nMonth nDay Value
2000 2 29 29 February 2000
1776 7 4 4 July 1776
1925 4 35 35 April 1925 (無効な日付)
10000 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 メンバー関数を参照してください。

解説

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

パラメーター Bounds
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
25 30 0 無効
9 60 0 無効

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

nYear nMonth nDay Value
1995 4 15 15 April 1995
1789 7 14 17 July 1789
1925 2 30 無効
10000 1 1 無効

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

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

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

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

COleDateTime::SetStatus

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

void SetStatus(DateTimeStatus status) throw();

パラメーター

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

解説

status パラメーターの値は、COleDateTime クラス内で定義されている DateTimeStatus 列挙型によって定義されています。 詳細については、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 日に設定されます。

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

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

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

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

nHour nMin nSec
1 3 3 01:03:03
23 45 0 23:45:00
25 30 0 無効
9 60 0 無効

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

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

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

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

関連項目

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