COleDateTime::operator +=,COleDateTime::operator -=
從這個
COleDateTime
物件新增和減
COleDateTime
去值。
COleDateTime::operator =
COleDateTime
複製值。
COleDateTime::operator DATE、 COleDateTime::operator Date*
將
COleDateTime
值轉換成
DATE
或
DATE*
。
公用資料成員
在上表中,雖然日值在 1899 年 12 月 30 日午夜之前變成負值,但日期時間值不會。 例如,6:00 AM 一律以分數值 0.25 表示,不論代表日期的整數是否為 1899 年 12 月 30 日之後的正數 (,1899 年 12 月 30 日) 或負數 (, 1899 年 1899 年 12 月 30 日) 。 這表示簡單的浮點比較會錯誤地在 12/29/1899 的上午 6:00 排序
COleDateTime
,以
代表同一天上午 7:00 的 7:00。
類別會
COleDateTime
處理從 100 年 1 月 1 日到 9999 年 12 月 31 日的日期。 類別
COleDateTime
使用西曆;它不支援 Julian 日期。
COleDateTime
忽略日光節約時間。 (請參閱
日期和時間:Automation Support
.)
您可以使用
%y
格式,只針對從 1900 開始的日期擷取兩位數年份。 如果您在 1900 之前的日期上使用
%y
格式,程式碼會產生 ASSERT 失敗。
此類型也可用來表示僅限日期或僅限時間的值。 依照慣例,日期 0 (1899 年 12 月 30 日) 用於僅限時間值,而時間 00:00 (午夜) 則用於僅限日期的值。
如果您使用小於 100 的日期來建立
COleDateTime
物件,則會接受日期,但後續呼叫
GetYear
、
GetMonth
、
GetDay
、、
GetHour
GetMinute
和
GetSecond
會失敗並傳回 -1。 先前,您可以使用兩位數的日期,但日期必須是 MFC 4.2 和更新版本中的 100 或更大。
若要避免問題,請指定四位數的日期。 例如:
COleDateTime mytime(1996, 1, 1, 0, 0, 0);
值的基本算數運算 COleDateTime
會使用隨附類別 COleDateTimeSpan。 COleDateTimeSpan
值會定義時間間隔。 這些類別之間的關聯性類似于 CTime 與 CTimeSpan之間的關聯性。
如需 和 COleDateTimeSpan
類別的詳細資訊 COleDateTime
,請參閱日期和時間:自動化支援一文。
頭: 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
物件。
如果兩個運算元之一無效,就會發生 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
現有的 VARIANT
資料結構 (物件 COleVariant
) 轉換成日期/時間值 (VT_DATE) 並複製到新 COleDateTime
物件。
dtSrc
要複製到新 COleDateTime
物件的日期/時間 (DATE
) 值。
timeSrc
time_t
要轉換成日期/時間值的 或 __time64_t
值,並複製到新的 COleDateTime
物件。
systimeSrc
SYSTEMTIME
結構,要轉換成日期/時間值,並複製到新的 COleDateTime
物件中。
filetimeSrc
FILETIME
結構,要轉換成日期/時間值,並複製到新的 COleDateTime
物件中。 FILETIME
使用通用國際標準時間 (UTC) ,因此如果您在 結構中傳遞當地時間,結果將會不正確。 如需詳細資訊,請參閱 Windows SDK 中的 檔案時間 。
nYear、 nMonth、 nDay、 nHour、 nMin、 nSec
指出要複製到新 COleDateTime
物件的日期和時間值。
wDosDate、 wDosTime
要轉換成日期/時間值的 MS-DOS 日期和時間值,並複製到新的 COleDateTime
物件。
包含目前當地時間 之 DBTimeStamp 結構的參考。
所有這些建構函式都會建立初始化為指定值的新 COleDateTime
物件。 下表顯示每個日期和時間元件的有效範圍:
日期/時間元件
COleDateTime(
) COleDateTime
建構初始化為 0 (午夜的 物件,1899 年 12 月 30 日) 。
COleDateTime(
dateSrc
) COleDateTime
從現有的 COleDateTime
物件建構 物件。
COleDateTime(
varSrc) 建構 COleDateTime
物件。 嘗試將結構或COleVariant物件轉換成 VARIANT
日期/時間 ( VT_DATE
) 值。 如果此轉換成功,則會將轉換的值複製到新的 COleDateTime
物件中。 如果不是,物件的值 COleDateTime
會設定為 0 (午夜,1899 年 12 月 30 日) ,且其狀態為無效。
COleDateTime(
dtSrc
) COleDateTime
從 DATE
值建構 物件。
COleDateTime(
timeSrc
) COleDateTime
從 time_t
值建構 物件。
COleDateTime(
systimeSrc) 從 SYSTEMTIME
值建構 COleDateTime
物件。
COleDateTime(
filetimeSrc
) COleDateTime
從 FILETIME
值建構 物件。 . FILETIME
使用通用國際標準時間 (UTC) ,因此如果您在 結構中傳遞當地時間,結果將會不正確。 如需詳細資訊,請參閱 Windows SDK 中的 檔案時間 。
COleDateTime(
nYear
、 nMonth
、、 nDay
、 nHour
、 nSec
nMin
) 從指定的數值建構 COleDateTime
物件。
COleDateTime(
wDosDate
, wDosTime
) 從指定的 MS-DOS 日期和時間值建構 COleDateTime
物件。
如需資料類型的詳細資訊 time_t
,請參閱執行時間程式庫參考中的time函式。
如需詳細資訊,請參閱 Windows SDK 中的 SYSTEMTIME 和 FILETIME 結構。
如需值界限 COleDateTime
的詳細資訊,請參閱 日期和時間:自動化支援一文。
只有在包含 OLEDB.h 時,才能使用 參數的 DBTIMESTAMP
建構函式。
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);
建立日期/時間值的格式化表示。
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忽略剖析期間的時間部分。
指出要用於轉換的地區設定識別碼。 如需語言識別項的詳細資訊,請參閱 語言識別項。
lpszFormat
格式字串, printf
類似于格式化字串。 每個格式化程式碼前面加上百分比 ( %
) 符號,都會由對應的 COleDateTime
元件取代。 格式化字串中的其他字元會保持不變地複製到傳回的字串。 如需詳細資訊,請參閱執行時間函式 strftime。 格式化程式碼 Format
的值和意義如下:
%H
當天的小時數
%M
目前小時內的分鐘數
%S
目前分鐘中的秒數
%%
百分比符號
nFormatID
格式控制字元串的資源識別碼。
CString
,包含格式化的日期/時間值。
如果這個 COleDateTime
物件的狀態為 Null,則傳回值為空字串。 如果狀態無效,則傳回字串是由字串資源ATL_IDS_DATETIME_INVALID所指定。
此函式三種表單的簡短描述如下:
Format
( dwFlags、 lcid)
此表單會使用語言規格來格式化值, (日期和時間) 地區設定識別碼。 使用預設參數時,除非時間部分是 0 (午夜) ,否則此表單只會列印日期,或日期部分為 0 (1899 年 12 月 30 日) ,在此情況下只會列印時間。 如果日期/時間值為 0 (1899 年 12 月 30 日午夜) ,則此表單的預設參數將會列印午夜。
Format
( lpszFormat)
此表單會使用格式字串來格式化值,其中包含前面加上百分比符號 (%) 的特殊格式代碼,如 中 printf
所示。 格式化字串會當做參數傳遞至函式。 如需格式化程式碼的詳細資訊,請參閱 Run-Time 程式庫參考中的 strftime、wcsftime 。
Format
( nFormatID)
此表單會使用格式字串來格式化值,其中包含前面加上百分比符號 (%) 的特殊格式代碼,如 中 printf
所示。 格式化字串是資源。 此字串資源的識別碼會以 參數的形式傳遞。 如需格式化程式碼的詳細資訊,請參閱執行時間程式庫參考中的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。
將產生的時間儲存在參考 的 timeStamp 結構中。 DBTIMESTAMP
此函式所初始化的資料結構會將其 fraction
成員設定為零。
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;如果轉換失敗,或物件為 Null 或無效,則 COleDateTime
為 FALSE。
GetAsSystemTime
會將產生的時間儲存在參考的 sysTime 物件中。 SYSTEMTIME
此函式所初始化的資料結構會將其 wMilliseconds
成員設定為零。
如需物件中 COleDateTime
保留之狀態資訊的詳細資訊,請參閱 GetStatus。
COleDateTime::GetAsUDATE
呼叫這個方法,以取得 物件中的 COleDateTime
時間做為 UDATE
資料結構。
bool GetAsUDATE(UDATE& uDate) const throw();
uDate
從 物件接收已轉換日期/時間值的 COleDateTime
結構參考 UDATE
。
如果成功,則傳回 TRUE;如果轉換失敗,或物件為 Null 或無效,則 COleDateTime
為 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
物件值之其他成員函式的資訊,請參閱下列成員函式:
GetMonth
GetYear
GetHour
GetMinute
GetSecond
GetDayOfWeek
GetDayOfYear
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=Monday 等等。
如需查詢此 COleDateTime
物件值之其他成員函式的資訊,請參閱下列成員函式:
GetDay
GetMonth
GetYear
GetHour
GetMinute
GetSecond
GetDayOfYear
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
物件值之其他成員函式的資訊,請參閱下列成員函式:
GetDay
GetMonth
GetYear
GetHour
GetMinute
GetSecond
GetDayOfWeek
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
物件值之其他成員函式的資訊,請參閱下列成員函式:
GetDay
GetMonth
GetYear
GetMinute
GetSecond
GetDayOfWeek
GetDayOfYear
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
物件值之其他成員函式的資訊,請參閱下列成員函式:
GetDay
GetMonth
GetYear
GetHour
GetSecond
GetDayOfWeek
GetDayOfYear
請參閱 GetHour的範例。
COleDateTime::GetMonth
取得這個日期/時間值所表示的月份。
int GetMonth() const throw();
以這個 COleDateTime
物件值表示的月份,如果 COleDateTime::error
無法取得月份,則為 。
有效的傳回值範圍介於 1 到 12 之間。
如需查詢此 COleDateTime
物件值之其他成員函式的資訊,請參閱下列成員函式:
GetDay
GetYear
GetHour
GetMinute
GetSecond
GetDayOfWeek
GetDayOfYear
請參閱 GetDay的範例。
COleDateTime::GetSecond
取得這個日期/時間值所表示的第二個 。
int GetSecond() const throw();
第二個以這個 COleDateTime
物件的值表示,如果 COleDateTime::error
無法取得第二個物件,則為 。
有效的傳回值範圍介於 0 到 59 之間。
類別 COleDateTime
不支援閏秒。
如需 的 COleDateTime
實作詳細資訊,請參閱 日期和時間:自動化支援一文。
如需查詢此 COleDateTime
物件值之其他成員函式的資訊,請參閱下列成員函式:
GetDay
GetMonth
GetYear
GetHour
GetMinute
GetDayOfWeek
GetDayOfYear
請參閱 GetHour的範例。
COleDateTime::GetStatus
取得指定 COleDateTime
物件的狀態 (有效性) 。
DateTimeStatus GetStatus() const throw();
傳回這個 COleDateTime
值的狀態。 如果您在以預設值建構的物件上 COleDateTime
呼叫 GetStatus
,它會傳回有效。 如果您在初始化的物件上 COleDateTime
呼叫 GetStatus
,並將建構函式設定為 null, 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,也就是說,這個物件沒有為此物件提供任何值。 (這在資料庫方面是「無值」的「null」,而不是 C++ Null.)
在下列情況下,物件的狀態 COleDateTime
無效:
如果其值是從 VARIANT
無法轉換成日期/時間值的 或 COleVariant
值設定。
如果其值是從 time_t
無法轉換成有效日期/時間值的 、 SYSTEMTIME
或 FILETIME
值設定。
如果其值是以不正確參數值來設定 SetDateTime
。
如果這個物件在算術指派作業期間發生溢位或下溢,也就是 +=
或 -=
。
如果指派不正確值給這個物件。
如果使用 明確將這個物件的狀態設定為無效 SetStatus
。
如需將狀態設定為無效之作業的詳細資訊,請參閱下列成員函式:
COleDateTime
SetDateTime
運算子 +, -
運算子 +=, -=
如需值界限 COleDateTime
的詳細資訊,請參閱 日期和時間:自動化支援一文。
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
物件值之其他成員函式的資訊,請參閱下列成員函式:
GetDay
GetMonth
GetHour
GetMinute
GetSecond
GetDayOfWeek
GetDayOfYear
如需值界限 COleDateTime
的詳細資訊,請參閱 日期和時間:自動化支援一文。
請參閱 GetDay的範例。
COleDateTime::m_dt
這個 COleDateTime
物件的基礎 DATE
結構。
DATE m_dt;
變更此函式所傳回指標所存取之 物件中的 DATE
值,將會變更這個 COleDateTime
物件的值。 它不會變更這個 COleDateTime
物件的狀態。
如需 物件實作 DATE
的詳細資訊,請參閱 日期和時間:自動化支援一文。
COleDateTime::m_status
包含這個 COleDateTime
物件的狀態。
DateTimeStatus m_status;
此資料成員的類型是 列舉型 DateTimeStatus
別 ,其定義于 類別內 COleDateTime
。 如需詳細資訊,請參閱 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
物件,而且其狀態會設定為有效。 如果轉換失敗,這個物件的值會設定為零, (1899 年 12 月 30 日,午夜) ,且其狀態為無效。
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
的詳細資訊,請參閱 日期和時間:自動化支援一文。
COleDateTime::operator +, -
加入和減去 ColeDateTime
值。
COleDateTime operator+(COleDateTimeSpan dateSpan) const throw();
COleDateTime operator-(COleDateTimeSpan dateSpan) const throw();
COleDateTimeSpan operator-(const COleDateTime& date) const throw();
COleDateTime
物件代表絕對時間。 COleDateTimeSpan 物件代表相對時間。 前兩個運算子可讓您從值加入和減去 COleDateTimeSpan
值 COleDateTime
。 第三個運算子可讓您從另一個 COleDateTimeSpan
運算子減去一個 COleDateTime
值,以產生值。
如果任一運算元為 Null,則產生的 COleDateTime
值狀態為 Null。
如果產生的 COleDateTime
值超出可接受的值界限,則該值 COleDateTime
的狀態無效。
如果任一運算元無效,而另一個運算元不是 Null,則產生的 COleDateTime
值狀態無效。
+如果物件設定為 null, COleDateTime
和 - 運算子將會判斷提示。 如需範例 ,請參閱 COleDateTime 關係運算子 。
如需有效、無效和 Null 狀態值的詳細資訊,請參閱 m_status 成員變數。
如需值界限 COleDateTime
的詳細資訊,請參閱 日期和時間:自動化支援一文。
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 成員變數。
+=如果物件設定為 null, COleDateTime
和 -= 運算子將會判斷提示。 如需範例 ,請參閱 COleDateTime 關係運算子 。
如需值界限 COleDateTime
的詳細資訊,請參閱 日期和時間:自動化支援一文。
COleDateTime::operator DATE
將 ColeDateTime
值轉換成 DATE
。
operator DATE() const throw();
這個運算子會 DATE
傳回物件,其值會從這個 COleDateTime
物件複製。 如需 物件實作 DATE
的詳細資訊,請參閱 日期和時間:自動化支援一文。
如果物件設定為 null, COleDateTime
運算子 DATE
會判斷提示。 如需範例 ,請參閱 COleDateTime 關係運算子 。
COleDateTime::P arseDateTime
剖析字串以讀取日期/時間值。
bool ParseDateTime(
LPCTSTR lpszDate,
DWORD dwFlags = 0,
LCID lcid = LANG_USER_DEFAULT) throw();
lpszDate
要剖析之 Null 終止字串的指標。 如需詳細資料,請參閱<備註>。
dwFlags
表示地區設定和剖析的旗標。 下列一或多個旗標:
LOCALE_NOUSEROVERRIDE 使用系統預設地區設定,而不是自訂使用者設定。
VAR_TIMEVALUEONLY在剖析期間忽略日期部分。
VAR_DATEVALUEONLY忽略剖析期間的時間部分。
表示要用於轉換的地區設定識別碼。
如果字串已成功轉換成日期/時間值,則傳回 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
地區設定識別碼也會影響字串格式是否可接受轉換為日期/時間值。
在VAR_DATEVALUEONLY的情況下,時間值會設定為時間 0 或午夜。 在VAR_TIMEVALUEONLY的情況下,日期值會設定為 date 0,這表示 1899 年 12 月 30 日。
如果字串無法轉換成日期/時間值,或發生數值溢位,則此 COleDateTime
物件的狀態無效。
如需值界限和實作 COleDateTime
的詳細資訊,請參閱 日期和時間:自動化支援一文。
COleDateTime::SetDate
設定這個 COleDateTime
物件的日期。
int SetDate(
int nYear,
int nMonth,
int nDay) throw();
nYear
表示要複製到這個 COleDateTime
物件的年份。
nMonth
表示要複製到這個 COleDateTime
物件的月份。
指出要複製到這個 COleDateTime
物件的日期。
如果成功設定此 COleDateTime
物件的值,則為零,否則為 1。 這個傳回值是以列舉型別為基礎 DateTimeStatus
。 如需詳細資訊,請參閱 SetStatus 成員函式。
日期會設定為指定的值。 時間會設定為 0,午夜。
如需參數值的界限,請參閱下表:
Bounds
如果月份的日期溢位,則會轉換成下個月的正確日期,並據以遞增月份和/或年份。 日期值為零表示上個月的最後一天。 行為與 相同 SystemTimeToVariantTime
。
如果參數所指定的日期值無效,這個物件的狀態會設定為 COleDateTime::invalid
。 您應該使用 GetStatus 來檢查值的有效性 DATE
,而且不應該假設 m_dt 的值會維持未修改狀態。
以下是日期值的一些範例:
nYear
nMonth
// 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
物件的值,則為零,否則為 1。 這個傳回值是以列舉型別為基礎 DateTimeStatus
。 如需詳細資訊,請參閱 SetStatus 成員函式。
如需參數值的界限,請參閱下表:
Bounds
如果月份的日期溢位,則會轉換成下個月的正確日期,並據以遞增月份和/或年份。 日期值為零表示上個月的最後一天。 行為與 SystemTimeToVariantTime相同。
如果參數所指定的日期或時間值無效,此物件的狀態會設定為無效,而且此物件的值不會變更。
以下是一些時間值的範例:
nHour
若要只設定日期,請參閱 COleDateTime::SetDate。 若要只設定時間,請參閱 COleDateTime::SetTime。
如需查詢此 COleDateTime
物件值的成員函式資訊,請參閱下列成員函式:
GetDay
GetMonth
GetYear
GetHour
GetMinute
GetSecond
GetDayOfWeek
GetDayOfYear
如需值界限 COleDateTime
的詳細資訊,請參閱 日期和時間:自動化支援一文。
請參閱 GetStatus 的範例。
COleDateTime::SetStatus
設定這個 COleDateTime
物件的狀態。
void SetStatus(DateTimeStatus status) throw();
status
這個 COleDateTime
物件的新狀態值。
status參數值是由 DateTimeStatus
列舉型別所定義,其定義于 類別內 COleDateTime
。 如需詳細資訊,請參閱 COleDateTime::GetStatus 。
此函式適用于進階程式設計情況。 此函式不會改變這個物件中的資料。 它最常用來將狀態設定為 Null 或 無效。 指派運算子 (運算子 =) ,而 SetDateTime 會根據來源值 () 來設定物件的狀態。
請參閱 GetStatus 的範例。
COleDateTime::SetTime
設定這個 COleDateTime
物件的時間。
int SetTime(
int nHour,
int nMin,
int nSec) throw();
nHour、 nMin、 nSec
指出要複製到這個 COleDateTime
物件的時間元件。
如果成功設定此 COleDateTime
物件的值,則為零,否則為 1。 這個傳回值是以列舉型別為基礎 DateTimeStatus
。 如需詳細資訊,請參閱 SetStatus 成員函式。
時間會設定為指定的值。 日期設定為日期 0,表示 1899 年 12 月 30 日。
如需參數值的界限,請參閱下表:
Bounds