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 時から測定されます。 次の表は、いくつかの日付とそれに関連する値を示したものです。
日 | 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
オブジェクトを作成した場合、その日付は受け入れられますが、その後の GetYear
、GetMonth
、GetDay
、GetHour
、GetMinute
、GetSecond
の呼び出しは失敗して -1 が返されます。 以前は 2 桁の日付を使用できましたが、MFC 4.2 以降では、日付は 100 以上である必要があります。
問題を回避するには、4 桁の日付を指定してください。 次に例を示します。
COleDateTime mytime(1996, 1, 1, 0, 0, 0);
COleDateTime
値の基本的な算術演算には、コンパニオンクラス COleDateTimeSpan を使用します。 COleDateTimeSpan
値では時間間隔を定義します。 これらのクラス間の関係は、CTime と CTimeSpan の間の関係に似ています。
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 の「ファイル時間」を参照してください。
nYear、nMonth、nDay、nHour、nMin、nSec
新しい COleDateTime
オブジェクトにコピーする日付と時刻の値を示します。
wDosDate、wDosTime
日付と時刻の値に変換されて新しい COleDateTime
オブジェクトにコピーされる MS-DOS の日付と時刻の値。
timeStamp
現在の現地日時が含まれる DBTimeStamp 構造体への参照。
解説
これらのすべてのコンストラクターで、指定した値に初期化された新しい COleDateTime
オブジェクトが作成されます。 次の表は、日付と時刻の各コンポーネントの有効な範囲です。
日付と時刻のコンポーネント | 有効な範囲 |
---|---|
year | 100 - 9999 |
month | 0 - 12 |
day | 0 - 31 |
時間 | 0 - 23 |
分 | 0 - 59 |
second | 0 - 59 |
日コンポーネントの実際の上限は、月と年のコンポーネントによって異なることに注意してください。 詳細については、メンバー関数 SetDateTime
と SetDate
を参照してください。
各コンストラクターの簡単な説明を次に示します。
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 に設定されます。
オブジェクトに保持されている状態情報の詳細については、COleDateTime
GetStatus を参照してください。
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_t
、SYSTEMTIME
、または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 を参照してください。
注意事項
このデータ メンバーは、高度なプログラミング状況のためのものです。 インライン メンバー関数 GetStatus と SetStatus を使用する必要があります。 このデータ メンバーの明示的な設定に関する他の注意点については、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();
パラメーター
nYear、nMonth、nDay、nHour、nMin、nSec
この 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();
パラメーター
nHour、nMin、nSec
この 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 の例を参照してください。