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 會使用隨附類別 COleDateTimeSpanCOleDateTimeSpan 值會定義時間間隔。 這些類別之間的關聯性類似于 CTimeCTimeSpan之間的關聯性。

如需 和 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 中的 檔案時間

nYearnMonthnDaynHournMinnSec
指出要複製到新 COleDateTime 物件的日期和時間值。

wDosDatewDosTime
要轉換成日期/時間值的 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) COleDateTimeDATE 值建構 物件。

  • COleDateTime(timeSrc) COleDateTimetime_t 值建構 物件。

  • COleDateTime(systimeSrc) SYSTEMTIME 值建構 COleDateTime 物件。

  • COleDateTime(filetimeSrc) COleDateTimeFILETIME 值建構 物件。 . FILETIME使用通用國際標準時間 (UTC) ,因此如果您在 結構中傳遞當地時間,結果將會不正確。 如需詳細資訊,請參閱 Windows SDK 中的 檔案時間

  • COleDateTime(nYearnMonth 、、 nDaynHournSecnMin) 從指定的數值建構 COleDateTime 物件。

  • COleDateTime(wDosDatewDosTime) 從指定的 MS-DOS 日期和時間值建構 COleDateTime 物件。

    如需資料類型的詳細資訊 time_t ,請參閱執行時間程式庫參考中的time函式。

    如需詳細資訊,請參閱 Windows SDK 中的 SYSTEMTIMEFILETIME 結構。

    如需值界限 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);    
    

    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忽略剖析期間的時間部分。

    指出要用於轉換的地區設定識別碼。 如需語言識別項的詳細資訊,請參閱 語言識別項

    lpszFormat
    格式字串, printf 類似于格式化字串。 每個格式化程式碼前面加上百分比 ( %) 符號,都會由對應的 COleDateTime 元件取代。 格式化字串中的其他字元會保持不變地複製到傳回的字串。 如需詳細資訊,請參閱執行時間函式 strftime。 格式化程式碼 Format 的值和意義如下:

  • %H 當天的小時數

  • %M 目前小時內的分鐘數

  • %S 目前分鐘中的秒數

  • %% 百分比符號

    nFormatID
    格式控制字元串的資源識別碼。

    CString,包含格式化的日期/時間值。

    如果這個 COleDateTime 物件的狀態為 Null,則傳回值為空字串。 如果狀態無效,則傳回字串是由字串資源ATL_IDS_DATETIME_INVALID所指定。

    此函式三種表單的簡短描述如下:

    Format ( dwFlagslcid)
    此表單會使用語言規格來格式化值, (日期和時間) 地區設定識別碼。 使用預設參數時,除非時間部分是 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
    從 物件接收已轉換日期/時間值的 COleDateTimeSYSTEMTIME結構的參考。

    如果成功,則傳回 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 無法轉換成有效日期/時間值的 、 SYSTEMTIMEFILETIME 值設定。

  • 如果其值是以不正確參數值來設定 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

    此資料成員適用于進階程式設計情況。 您應該使用內嵌成員函式 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 物件,而且其狀態會設定為有效。 如果轉換失敗,這個物件的值會設定為零, (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 中的 SYSTEMTIMEFILETIME 結構。

    如需值界限 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 物件代表相對時間。 前兩個運算子可讓您從值加入和減去 COleDateTimeSpanCOleDateTime 。 第三個運算子可讓您從另一個 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();
    

    nYearnMonthnDaynHournMinnSec
    指出要複製到這個 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();
    

    nHournMinnSec
    指出要複製到這個 COleDateTime 物件的時間元件。

    如果成功設定此 COleDateTime 物件的值,則為零,否則為 1。 這個傳回值是以列舉型別為基礎 DateTimeStatus 。 如需詳細資訊,請參閱 SetStatus 成員函式。

    時間會設定為指定的值。 日期設定為日期 0,表示 1899 年 12 月 30 日。

    如需參數值的界限,請參閱下表:

    Bounds
  •