Sdílet prostřednictvím


COleDateTime – třída

Zapouzdřuje DATE datový typ, který se používá v automatizaci OLE.

Syntaxe

class COleDateTime

Členové

Veřejné konstruktory

Název Popis
COleDateTime::COleDateTime COleDateTime Vytvoří objekt.

Veřejné metody

Název Popis
COleDateTime::Format Vygeneruje formátovanou řetězcovou reprezentaci objektu COleDateTime .
COleDateTime::GetAsDBTIMESTAMP Voláním této metody získáte čas v objektu COleDateTime jako datovou DBTIMESTAMP strukturu.
COleDateTime::GetAsSystemTime Voláním této metody získáte čas v objektu COleDateTime jako strukturu dat SYSTEMTIME .
COleDateTime::GetAsUDATE Voláním této metody získáte čas v COleDateTime datové UDATE struktuře.
COleDateTime::GetCurrentTime COleDateTime Vytvoří objekt, který představuje aktuální čas (statickou členovou funkci).
COleDateTime::GetDay Vrátí den, kdy tento COleDateTime objekt představuje (1 – 31).
COleDateTime::GetDayOfWeek Vrátí den v týdnu, který tento COleDateTime objekt představuje (neděle = 1).
COleDateTime::GetDayOfYear Vrátí den roku, který tento COleDateTime objekt představuje (1. ledna = 1).
COleDateTime::GetHour Vrátí hodinu, která tento COleDateTime objekt představuje (0 – 23).
COleDateTime::GetMinute Vrátí minutu, po které tento COleDateTime objekt představuje (0 – 59).
COleDateTime::GetMonth Vrátí měsíc, který tento COleDateTime objekt představuje (1 – 12).
COleDateTime::GetSecond Vrátí sekundu, která tento COleDateTime objekt představuje (0 – 59).
COleDateTime::GetStatus Získá stav (platnost) tohoto COleDateTime objektu.
COleDateTime::GetYear Vrátí rok, který tento COleDateTime objekt představuje.
COleDateTime::P arseDateTime Načte hodnotu data a času z řetězce a nastaví hodnotu COleDateTime.
COleDateTime::SetDate Nastaví hodnotu tohoto COleDateTime objektu na zadanou hodnotu pouze pro datum.
COleDateTime::SetDateTime Nastaví hodnotu tohoto COleDateTime objektu na zadanou hodnotu data a času.
COleDateTime::SetStatus Nastaví stav (platnost) tohoto COleDateTime objektu.
COleDateTime::SetTime Nastaví hodnotu tohoto COleDateTime objektu na zadanou hodnotu pouze pro čas.

Veřejné operátory

Název Popis
COleDateTime::operator ==, COleDateTime::operator <atd. Porovnejte dvě COleDateTime hodnoty.
COleDateTime::operator +, COleDateTime::operator - Sčítání a odčítání COleDateTime hodnot
COleDateTime::operator +=, COleDateTime::operator -= Sčítá a odečte COleDateTime hodnotu od tohoto COleDateTime objektu.
COleDateTime::operator = COleDateTime Zkopíruje hodnotu.
COleDateTime::operator DATE, COleDateTime::operator Date* COleDateTime Převede hodnotu na hodnotu DATE nebo .DATE*

Veřejné datové členy

Název Popis
COleDateTime::m_dt Obsahuje podklad DATE pro tento COleDateTime objekt.
COleDateTime::m_status Obsahuje stav tohoto COleDateTime objektu.

Poznámky

COleDateTime nemá základní třídu.

Jedná se o jeden z možných typů pro datový typ VARIANT automatizace OLE. COleDateTime Hodnota představuje absolutní hodnotu data a času.

Typ DATE se implementuje jako hodnota s plovoucí desetinou čárkou. Dny se měří od 30. prosince 1899 o půlnoci. V následující tabulce jsou uvedena některá kalendářní data a jejich přidružené hodnoty:

Datum Hodnota
Prosince 29, 1899, půlnoc -1,0
29. prosince 1899, 6:00 -1.25
30. prosince 1899, půlnoc 0,0
31. prosince 1899, půlnoc 1.0
1. ledna 1900, 6:00 2,25

Upozornění

V tabulce výše se hodnoty dne před půlnocí 30. prosince 1899 záporně záporně liší. Například hodnota 6:00 je vždy reprezentována desetinnou hodnotou 0,25 bez ohledu na to, jestli celé číslo představující den je kladné (po 30. prosinci 1899) nebo záporné (před 30. prosincem 1899). To znamená, že jednoduché porovnání s plovoucí desetinou čárkou by chybně seřadilo COleDateTime představující 6:00 dne 12.29.1899 jako pozdější než jedno představující 7:00 ve stejný den.

Třída COleDateTime zpracovává data od 1. ledna 100 do 31. prosince 9999. Třída COleDateTime používá gregoriánský kalendář, nepodporuje julianská kalendářní data. COleDateTime ignoruje letní čas. (Viz Datum a čas: Podpora automatizace.)

Poznámka:

Formát můžete použít %y k načtení dvouciferného roku pouze pro kalendářní data od roku 1900. Pokud použijete %y formát k datu před 1900, kód vygeneruje chybu ASSERT.

Tento typ slouží také k reprezentaci hodnot pouze pro datum nebo pouze čas. Podle konvence se datum 0 (30. prosince 1899) používá pro hodnoty jen pro čas a čas 00:00 (půlnoc) se používá pro hodnoty pouze s datem.

Pokud vytvoříte COleDateTime objekt pomocí data menšího než 100, datum se přijme, ale následná volání GetYear, , GetMonth, GetDay, GetHourGetMinute, a selžou a GetSecond vrátí -1. Dříve bylo možné použít dvouciferná kalendářní data, ale data musí být v prostředí MFC 4.2 nebo novější 100 nebo vyšší.

Chcete-li se vyhnout problémům, zadejte čtyřciferné datum. Příklad:

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

Základní aritmetické operace pro COleDateTime hodnoty používají doprovodnou třídu COleDateTimeSpan. COleDateTimeSpan hodnoty definují časový interval. Vztah mezi těmito třídami je podobný vztahu mezi CTime a CTimeSpan.

Další informace o třídách COleDateTime najdete COleDateTimeSpan v článku Datum a čas: Podpora automatizace.

Požadavky

Hlavička: ATLComTime.h

Relační operátory COleDateTime

Relační operátory.

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

Parametry

rande
Objekt COleDateTime , který se má porovnat.

Poznámky

Poznámka:

Pokud je některý z těchto dvou operandů neplatný, dojde k chybě ATLASSERT.

Příklady

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

Operátory >=, <=, >a <, budou assert, pokud COleDateTime je objekt nastaven na hodnotu null.

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

COleDateTime::COleDateTime

COleDateTime Vytvoří objekt.

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

Parametry

dateSrc
Existující COleDateTime objekt, který se má zkopírovat do nového COleDateTime objektu.

varSrc
Existující VARIANT datová struktura (pravděpodobně COleVariant objekt), která se má převést na hodnotu data a času (VT_DATE) a zkopírovat do nového COleDateTime objektu.

dtSrc
Hodnota data a času,DATE která se má zkopírovat do nového COleDateTime objektu.

timeSrc
Hodnota time_t nebo __time64_t hodnota, která se má převést na hodnotu data a času, a zkopíruje se do nového COleDateTime objektu.

systimeSrc
Struktura SYSTEMTIME , která se má převést na hodnotu data a času a zkopírovat ji do nového COleDateTime objektu.

filetimeSrc
Struktura FILETIME , která se má převést na hodnotu data a času a zkopírovat ji do nového COleDateTime objektu. Používá FILETIME univerzální koordinovaný čas (UTC), takže pokud předáte místní čas ve struktuře, výsledky budou nesprávné. Další informace najdete v tématu Časy souborů v sadě Windows SDK.

nYear, nMonth, nDay, nHour, nMin, nSec
Uveďte hodnoty data a času, které se mají zkopírovat do nového COleDateTime objektu.

wDosDate, wDosTime
Hodnoty data a času MS-DOS, které se mají převést na hodnotu data a času a zkopírovat do nového COleDateTime objektu.

časová značka
Odkaz na strukturu DBTimeStamp obsahující aktuální místní čas.

Poznámky

Všechny tyto konstruktory vytvářejí nové COleDateTime objekty inicializované na zadanou hodnotu. Následující tabulka uvádí platné rozsahy pro každou komponentu data a času:

Komponenta data a času Platný rozsah
za rok 100 - 9999
měs 0 - 12
den 0 - 31
hodina 0 - 23
minuta 0 - 59
vteřina 0 - 59

Všimněte si, že skutečná horní mez pro součást dne se liší podle součástí měsíce a roku. Podrobnosti najdete v SetDate tématu nebo SetDateTime členské funkce.

Následuje stručný popis každého konstruktoru:

  • COleDateTime() COleDateTime Vytvoří objekt inicializovaný na 0 (půlnoc 30. prosince 1899).

  • COleDateTime(dateSrc ) COleDateTime Vytvoří objekt z existujícího COleDateTime objektu.

  • COleDateTime(varSrc ) COleDateTime Vytvoří objekt. Pokusí se převést VARIANT strukturu nebo COleVariant objekt na hodnotu data a času ( VT_DATE). Pokud je převod úspěšný, převedená hodnota se zkopíruje do nového COleDateTime objektu. Pokud není, hodnota objektu COleDateTime je nastavena na 0 (půlnoc, 30. prosince 1899) a jeho stav je neplatný.

  • COleDateTime(dtSrc ) COleDateTime Vytvoří objekt z DATE hodnoty.

  • COleDateTime(timeSrc ) COleDateTime Vytvoří objekt z time_t hodnoty.

  • COleDateTime(systimeSrc ) COleDateTime Vytvoří objekt z SYSTEMTIME hodnoty.

  • COleDateTime(filetimeSrc ) COleDateTime Vytvoří objekt z FILETIME hodnoty. . Používá FILETIME univerzální koordinovaný čas (UTC), takže pokud předáte místní čas ve struktuře, výsledky budou nesprávné. Další informace naleznete v tématu Časy souborů v sadě Windows SDK.

  • COleDateTime(nYear, nMonth, nDay, nHour, nMin, nSec ) Vytvoří COleDateTime objekt ze zadaných číselných hodnot.

  • COleDateTime(wDosDate, wDosTime ) COleDateTime Vytvoří objekt ze zadaných hodnot data a času MS-DOS.

Další informace o datovém time_t typu najdete v referenční dokumentaci k knihovně run-time.

Další informace najdete v strukturách SYSTEMTIME a FILETIME v sadě Windows SDK.

Další informace o mezích COleDateTime hodnot najdete v článku Datum a čas: Podpora automatizace.

Poznámka:

Konstruktor používající DBTIMESTAMP parametr je k dispozici pouze v případech, kdy je zahrnuta technologie OLEDB.h.

Příklad

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

Vytvoří formátovanou reprezentaci hodnoty data a času.

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

Parametry

dwFlags
Označuje jeden z následujících příznaků národního prostředí:

  • LOCALE_NOUSEROVERRIDE Místo vlastních uživatelských nastavení použijte výchozí nastavení národního prostředí systému.

  • VAR_TIMEVALUEONLY během analýzy ignorujte část kalendářních dat.

  • VAR_DATEVALUEONLY během analýzy přeskočte čas.

lcid
Označuje ID národního prostředí, které se má použít pro převod. Další informace o identifikátorech jazyka naleznete v tématu Identifikátory jazyka.

lpszFormat
Formátovací řetězec podobný řetězci printf formátování. Každý kód formátování před znakem procenta ( %) se nahradí odpovídající COleDateTime komponentou. Ostatní znaky ve formátovacím řetězci se zkopírují beze změny do vráceného řetězce. Další informace najdete v tématu strftime funkce runtime. Hodnota a význam kódů formátování jsou následující Format :

  • %H Hodiny v aktuálním dni

  • %M Počet minut v aktuální hodině

  • %S Sekundy v aktuální minutě

  • %% Znaménko procent

nFormatID
ID prostředku pro řetězec pro ovládací prvek formátu.

Návratová hodnota

A CString obsahující formátovanou hodnotu data a času.

Poznámky

Pokud je stav tohoto COleDateTime objektu null, návratová hodnota je prázdný řetězec. Pokud je stav neplatný, návratový řetězec je určen řetězcovým prostředkem ATL_IDS_DATETIME_INVALID.

Stručný popis tří formulářů pro tuto funkci:

Format( dwFlags, lcid)
Tento formulář formátuje hodnotu pomocí specifikací jazyka (ID národního prostředí) pro datum a čas. Pomocí výchozích parametrů tento formulář vytiskne datum a čas, pokud časová část není 0 (půlnoc), v takovém případě se vytiskne jenom datum nebo část s datem je 0 (30. prosince 1899), v takovém případě se vytiskne jenom čas. Pokud je hodnota data a času 0 (30. prosince 1899, půlnoc), bude tento formulář s výchozími parametry tisknout půlnoc.

Format( lpszFormat)
Tento formulář formátuje hodnotu pomocí řetězce formátu, který obsahuje speciální kódy formátování, které jsou před znakem procenta (%), jako v printf. Formátovací řetězec se funkci předá jako parametr. Další informace o kódech formátování naleznete v tématu strftime, wcsftime v referenční dokumentaci knihovny runtime.

Format( nFormatID)
Tento formulář formátuje hodnotu pomocí řetězce formátu, který obsahuje speciální kódy formátování, které jsou před znakem procenta (%), jako v printf. Formátovací řetězec je prostředek. ID tohoto prostředku řetězce se předává jako parametr. Další informace o kódech formátování naleznete v tématu strftime, wcsftime v referenční dokumentaci knihovny runtime.

Příklad

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

Voláním této metody získáte čas v objektu COleDateTime jako datovou DBTIMESTAMP strukturu.

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

Parametry

časová značka
Odkaz na strukturu DBTimeStamp .

Návratová hodnota

Nenulové, pokud je úspěšné; jinak 0.

Poznámky

Uloží výsledný čas do odkazované struktury časového razítka . Datová DBTIMESTAMP struktura inicializovaná touto funkcí bude mít její fraction člen nastaven na nulu.

Příklad

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

COleDateTime::GetAsSystemTime

Voláním této metody získáte čas v objektu COleDateTime jako datovou SYSTEMTIME strukturu.

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

Parametry

sysTime
Odkaz na strukturu SYSTEMTIME pro příjem převedené hodnoty data a času z objektu COleDateTime .

Návratová hodnota

Vrátí hodnotu PRAVDA, pokud je úspěšná; NEPRAVDA, pokud převod selže nebo pokud COleDateTime je objekt NULL nebo neplatný.

Poznámky

GetAsSystemTime uloží výsledný čas v odkazovaném objektu sysTime . Datová SYSTEMTIME struktura inicializovaná touto funkcí bude mít její wMilliseconds člen nastaven na nulu.

Další informace o stavových informacích uložených v objektu COleDateTime naleznete v tématu GetStatus.

COleDateTime::GetAsUDATE

Voláním této metody získáte čas v objektu COleDateTime jako datovou UDATE strukturu.

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

Parametry

uDate
Odkaz na UDATE strukturu pro příjem převedené hodnoty data a času z objektu COleDateTime .

Návratová hodnota

Vrátí hodnotu PRAVDA, pokud je úspěšná; NEPRAVDA, pokud převod selže nebo pokud COleDateTime je objekt NULL nebo neplatný.

Poznámky

Struktura UDATE představuje "rozbalené" datum.

COleDateTime::GetCurrentTime

Voláním této statické členské funkce vrátíte aktuální hodnotu data a času.

static COleDateTime WINAPI GetCurrentTime() throw();

Příklad

// 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

Získá den v měsíci reprezentovaný touto hodnotou data a času.

int GetDay() const throw();

Návratová hodnota

Den v měsíci reprezentovaný hodnotou tohoto COleDateTime objektu nebo COleDateTime::error pokud den nelze získat.

Poznámky

Platný rozsah vrácených hodnot mezi 1 a 31.

Informace o dalších členských funkcích, které dotazují hodnotu tohoto COleDateTime objektu, najdete v následujících členských funkcích:

Příklad

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

Získá den v týdnu reprezentovaný touto hodnotou data a času.

int GetDayOfWeek() const throw();

Návratová hodnota

Den v týdnu reprezentovaný hodnotou tohoto COleDateTime objektu nebo COleDateTime::error pokud nelze získat den v týdnu.

Poznámky

Platný návratový rozsah hodnot mezi 1 a 7, kde 1=neděle, 2=pondělí atd.

Informace o dalších členských funkcích, které dotazují hodnotu tohoto COleDateTime objektu, najdete v následujících členských funkcích:

Příklad

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

COleDateTime::GetDayOfYear

Získá den roku reprezentovaný touto hodnotou data a času.

int GetDayOfYear() const throw();

Návratová hodnota

Den roku reprezentovaný hodnotou tohoto COleDateTime objektu nebo COleDateTime::error pokud nelze získat den v roce.

Poznámky

Platný rozsah návratových hodnot mezi 1 a 366, kde 1. leden = 1.

Informace o dalších členských funkcích, které dotazují hodnotu tohoto COleDateTime objektu, najdete v následujících členských funkcích:

Příklad

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

COleDateTime::GetHour

Získá hodinu reprezentovanou touto hodnotou data a času.

int GetHour() const throw();

Návratová hodnota

Hodina reprezentovaná hodnotou tohoto COleDateTime objektu nebo COleDateTime::error v případě, že hodinu nelze získat.

Poznámky

Platný rozsah vrácených hodnot v rozsahu od 0 do 23.

Informace o dalších členských funkcích, které dotazují hodnotu tohoto COleDateTime objektu, najdete v následujících členských funkcích:

Příklad

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

Získá minutu reprezentovanou touto hodnotou data a času.

int GetMinute() const throw();

Návratová hodnota

Minuta reprezentovaná hodnotou tohoto COleDateTime objektu nebo COleDateTime::error pokud minutu nelze získat.

Poznámky

Platný rozsah vrácených hodnot v rozsahu od 0 do 59.

Informace o dalších členských funkcích, které dotazují hodnotu tohoto COleDateTime objektu, najdete v následujících členských funkcích:

Příklad

Podívejte se na příklad getHour.

COleDateTime::GetMonth

Získá měsíc reprezentovaný touto hodnotou data a času.

int GetMonth() const throw();

Návratová hodnota

Měsíc reprezentovaný hodnotou tohoto COleDateTime objektu nebo COleDateTime::error pokud měsíc nelze získat.

Poznámky

Platný rozsah návratových hodnot mezi 1 a 12.

Informace o dalších členských funkcích, které dotazují hodnotu tohoto COleDateTime objektu, najdete v následujících členských funkcích:

Příklad

Podívejte se na příklad pro GetDay.

COleDateTime::GetSecond

Získá druhou hodnotu reprezentovanou touto hodnotou data a času.

int GetSecond() const throw();

Návratová hodnota

Druhý reprezentovaný hodnotou tohoto COleDateTime objektu nebo COleDateTime::error pokud se druhý nepodařilo získat.

Poznámky

Platný rozsah vrácených hodnot v rozsahu od 0 do 59.

Poznámka:

Třída COleDateTime nepodporuje přestupné sekundy.

Další informace o implementaci COleDateTimenaleznete v článku Datum a čas: Podpora automatizace.

Informace o dalších členských funkcích, které dotazují hodnotu tohoto COleDateTime objektu, najdete v následujících členských funkcích:

Příklad

Podívejte se na příklad getHour.

COleDateTime::GetStatus

Získá stav (platnost) daného COleDateTime objektu.

DateTimeStatus GetStatus() const throw();

Návratová hodnota

Vrátí stav této COleDateTime hodnoty. Pokud voláte GetStatus COleDateTime objekt vytvořený s výchozím nastavením, vrátí platnost. Pokud voláte GetStatus COleDateTime objekt inicializovaný pomocí konstruktoru nastaveného na hodnotu null, GetStatus vrátí hodnotu null.

Poznámky

Návratová hodnota je definována výčtem DateTimeStatus typu, který je definován v rámci COleDateTime třídy.

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

Stručný popis těchto hodnot stavu najdete v následujícím seznamu:

  • COleDateTime::error Označuje, že při pokusu o získání části hodnoty data a času došlo k chybě.

  • COleDateTime::valid Označuje, že tento COleDateTime objekt je platný.

  • COleDateTime::invalid Označuje, že tento COleDateTime objekt je neplatný. To znamená, že jeho hodnota může být nesprávná.

  • COleDateTime::null Označuje, že tento COleDateTime objekt má hodnotu null, to znamená, že pro tento objekt nebyla zadána žádná hodnota. (Toto je hodnota null v databázovém smyslu "nemá žádnou hodnotu", na rozdíl od hodnoty C++NULL.)

Stav objektu COleDateTime je neplatný v následujících případech:

  • Pokud je jeho hodnota nastavená VARIANT z hodnoty nebo COleVariant hodnoty, která se nedá převést na hodnotu data a času.

  • Pokud je jeho hodnota nastavena time_tz hodnoty , SYSTEMTIMEnebo FILETIME hodnotu, která nelze převést na platnou hodnotu data a času.

  • Pokud je jeho hodnota nastavena SetDateTime neplatnými hodnotami parametrů.

  • Pokud tento objekt zaznamenal přetečení nebo podtečení během aritmetické operace přiřazení, += konkrétně nebo -=.

  • Pokud byla k tomuto objektu přiřazena neplatná hodnota.

  • Pokud byl stav tohoto objektu explicitně nastaven na neplatné pomocí SetStatus.

Další informace o operacích, které mohou nastavit stav na neplatné, najdete v následujících členských funkcích:

Další informace o mezích COleDateTime hodnot najdete v článku Datum a čas: Podpora automatizace.

Příklad

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

Získá rok reprezentovaný touto hodnotou data a času.

int GetYear() const throw();

Návratová hodnota

Rok reprezentovaný hodnotou tohoto COleDateTime objektu nebo COleDateTime::error pokud se rok nepodařilo získat.

Poznámky

Platný návratový rozsah hodnot mezi 100 a 9999, což zahrnuje století.

Informace o dalších členských funkcích, které dotazují hodnotu tohoto COleDateTime objektu, najdete v následujících členských funkcích:

Další informace o mezích COleDateTime hodnot najdete v článku Datum a čas: Podpora automatizace.

Příklad

Podívejte se na příklad pro GetDay.

COleDateTime::m_dt

DATE Základní struktura pro tento COleDateTime objekt.

DATE m_dt;

Poznámky

Upozornění

Změna hodnoty v objektu DATE , ke který přistupuje ukazatel vrácený touto funkcí, změní hodnotu tohoto COleDateTime objektu. Nezmění stav tohoto COleDateTime objektu.

Další informace o implementaci objektu DATE naleznete v článku Datum a čas: Podpora automatizace.

COleDateTime::m_status

Obsahuje stav tohoto COleDateTime objektu.

DateTimeStatus m_status;

Poznámky

Typ tohoto datového členu je výčtový typ DateTimeStatus, který je definován v rámci COleDateTime třídy. Další informace naleznete v tématu COleDateTime::GetStatus.

Upozornění

Tento datový člen je určený pro pokročilé programovací situace. Měli byste použít vložené členské funkce GetStatus a SetStatus. Další SetStatus upozornění týkající se explicitního nastavení tohoto datového člena

COleDateTime::operator =

COleDateTime Zkopíruje hodnotu.

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

Poznámky

Tyto přetížené operátory přiřazení zkopírují hodnotu zdrojového data a času do tohoto COleDateTime objektu. Stručný popis každého z těchto přetížených operátorů přiřazení:

  • operator =( dateSrc ) Hodnota a stav operandu se zkopírují do tohoto COleDateTime objektu.

  • operator =( varSrc ) Pokud je převod hodnoty VARIANT (nebo COleVariant objektu) na datum a čas (VT_DATE) úspěšný, převedená hodnota se zkopíruje do tohoto COleDateTime objektu a jeho stav je nastaven na platný. Pokud převod není úspěšný, hodnota tohoto objektu je nastavena na nulu (30. prosince 1899, půlnoc) a jeho stav je neplatný.

  • operator =( dtSrc ) Hodnota DATE se zkopíruje do tohoto COleDateTime objektu a její stav je nastaven na platný.

  • operator =( timeSrc ) Hodnota time_t je __time64_t převedena a zkopírována do tohoto COleDateTime objektu. Pokud je převod úspěšný, stav tohoto objektu je nastaven na platný; v případě neúspěchu je nastavena na neplatnou hodnotu.

  • operator =( systimeSrc ) Hodnota SYSTEMTIME je převedena a zkopírována do tohoto COleDateTime objektu. Pokud je převod úspěšný, stav tohoto objektu je nastaven na platný; v případě neúspěchu je nastavena na neplatnou hodnotu.

  • operator =( uDate ) Hodnota UDATE je převedena a zkopírována do tohoto COleDateTime objektu. Pokud je převod úspěšný, stav tohoto objektu je nastaven na platný; v případě neúspěchu je nastavena na neplatnou hodnotu. Struktura UDATE představuje "rozbalené" datum. Další informace naleznete ve funkci VarDateFromUdate.

  • operator =( filetimeSrc ) Hodnota FILETIME je převedena a zkopírována do tohoto COleDateTime objektu. Pokud je převod úspěšný, stav tohoto objektu je nastaven na platný; v opačném případě je nastavena na neplatnou hodnotu. FILETIME používá univerzální koordinovaný čas (UTC), takže pokud ve struktuře předáte čas UTC, budou výsledky převedeny z času UTC na místní čas a budou uloženy jako variantní čas. Toto chování je stejné jako v sadě Visual C++ 6.0 a Visual C++.NET 2003 SP2. Další informace naleznete v tématu Časy souborů v sadě Windows SDK.

Další informace najdete v položce VARIANT v sadě Windows SDK.

Další informace o datovém time_t typu najdete v referenční dokumentaci k knihovně run-time.

Další informace najdete v strukturách SYSTEMTIME a FILETIME v sadě Windows SDK.

Další informace o mezích COleDateTime hodnot najdete v článku Datum a čas: Podpora automatizace.

COleDateTime::operator +, -

Sčítání a odčítání ColeDateTime hodnot

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

Poznámky

COleDateTime objekty představují absolutní časy. COleDateTimeSpan objekty představují relativní časy. První dva operátory umožňují přičíst a odečíst COleDateTimeSpan hodnotu od COleDateTime hodnoty. Třetí operátor umožňuje odečíst jednu COleDateTime hodnotu od druhé a získat COleDateTimeSpan tak hodnotu.

Pokud některý z operandů má hodnotu null, je stav výsledné COleDateTime hodnoty null.

Pokud výsledná COleDateTime hodnota spadá mimo hranice přijatelných hodnot, stav této COleDateTime hodnoty je neplatný.

Pokud je některý z operandů neplatný a druhý není null, je stav výsledné COleDateTime hodnoty neplatný.

Operátory + se - provedou, pokud COleDateTime je objekt nastaven na hodnotu null. Příklad najdete v relačních operátorech COleDateTime.

Další informace o platných, neplatných a null stavových hodnotách najdete v m_status členské proměnné.

Další informace o mezích COleDateTime hodnot najdete v článku Datum a čas: Podpora automatizace.

Příklad

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 +=, -=

Sčítá a odečte ColeDateTime hodnotu od tohoto COleDateTime objektu.

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

Poznámky

Tyto operátory umožňují sčítat a odečítat COleDateTimeSpan hodnotu do a od této COleDateTimehodnoty . Pokud některý z operandů má hodnotu null, je stav výsledné COleDateTime hodnoty null.

Pokud výsledná COleDateTime hodnota spadá mimo hranice přijatelných hodnot, je stav této COleDateTime hodnoty nastaven na neplatný.

Pokud je některý z operandů neplatný a druhý není null, je stav výsledné COleDateTime hodnoty neplatný.

Další informace o platných, neplatných a null stavových hodnotách najdete v m_status členské proměnné.

Operátory += se -= provedou, pokud COleDateTime je objekt nastaven na hodnotu null. Příklad najdete v relačních operátorech COleDateTime.

Další informace o mezích COleDateTime hodnot najdete v článku Datum a čas: Podpora automatizace.

COleDateTime::operator DATE

ColeDateTime Převede hodnotu na .DATE

operator DATE() const throw();

Poznámky

Tento operátor vrátí DATE objekt, jehož hodnota je zkopírována z tohoto COleDateTime objektu. Další informace o implementaci objektu DATE naleznete v článku Datum a čas: Podpora automatizace.

Operátor DATE se použije, pokud COleDateTime je objekt nastaven na hodnotu null. Příklad najdete v relačních operátorech COleDateTime.

COleDateTime::P arseDateTime

Parsuje řetězec pro čtení hodnoty data a času.

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

Parametry

lpszDate
Ukazatel na řetězec ukončený hodnotou null, který se má analyzovat. Podrobnosti najdete v části Poznámky.

dwFlags
Označuje příznaky nastavení národního prostředí a parsování. Jeden nebo více následujících příznaků:

  • LOCALE_NOUSEROVERRIDE Místo vlastních uživatelských nastavení použijte výchozí nastavení národního prostředí systému.

  • VAR_TIMEVALUEONLY během analýzy ignorujte část kalendářních dat.

  • VAR_DATEVALUEONLY během analýzy přeskočte čas.

lcid
Označuje ID národního prostředí, které se má použít pro převod.

Návratová hodnota

Vrátí hodnotu TRUE, pokud byl řetězec úspěšně převeden na hodnotu data a času, jinak NEPRAVDA.

Poznámky

Pokud byl řetězec úspěšně převeden na hodnotu data a času, je hodnota tohoto COleDateTime objektu nastavena na tuto hodnotu a její stav je platný.

Poznámka:

Hodnoty roku musí být v rozmezí od 100 do 9999 (včetně).

Parametr lpszDate může mít různé formáty. Například následující řetězce obsahují přijatelné formáty data a času:

"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 národního prostředí bude mít vliv také na to, jestli je formát řetězce přijatelný pro převod na hodnotu data a času.

V případě VAR_DATEVALUEONLY je časová hodnota nastavená na hodnotu 0 nebo půlnoc. V případě VAR_TIMEVALUEONLY je hodnota data nastavena na datum 0, což znamená 30. prosince 1899.

Pokud řetězec nelze převést na hodnotu data a času nebo pokud došlo k číselnému přetečení, stav tohoto COleDateTime objektu je neplatný.

Další informace o mezích a implementaci COleDateTime hodnot najdete v článku Datum a čas: Podpora automatizace.

COleDateTime::SetDate

Nastaví datum tohoto COleDateTime objektu.

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

Parametry

nYear
Označuje rok, který se má do tohoto COleDateTime objektu zkopírovat.

nMonth
Označuje měsíc, který se má zkopírovat do tohoto COleDateTime objektu.

nDay
Označuje den kopírování do tohoto COleDateTime objektu.

Návratová hodnota

Nula, pokud byla hodnota tohoto COleDateTime objektu úspěšně nastavena; jinak 1. Tato návratová hodnota je založena na výčtovém DateTimeStatus typu. Další informace naleznete v části SetStatus členské funkce.

Poznámky

Datum je nastaveno na zadané hodnoty. Čas je nastavený na 0, půlnoc.

Hodnoty parametrů najdete v následující tabulce:

Parametr Hranice
nYear 100 - 9999
nMonth 1 - 12
nDay 0 - 31

Pokud se den v měsíci přeteče, převede se na správný den následujícího měsíce a měsíc a/nebo rok se odpovídajícím způsobem zvýší. Hodnota dne nula označuje poslední den předchozího měsíce. Chování je stejné jako SystemTimeToVariantTime.

Pokud hodnota data zadaná parametry není platná, je stav tohoto objektu nastaven na COleDateTime::invalid. Funkci GetStatus byste měli použít ke kontrole platnosti DATE hodnoty a neměli byste předpokládat, že hodnota m_dt zůstane nezměněná.

Tady je několik příkladů hodnot kalendářních dat:

nYear nMonth nDay Hodnota
2000 2 29 29. února 2000
1776 7 4 4. července 1776
1925 4 35 35. dubna 1925 (neplatné datum)
10000 1 1 1. ledna 10000 (neplatné datum)

Pokud chcete nastavit datum i čas, přečtěte si téma COleDateTime::SetDateTime.

Informace o členských funkcích, které dotazuje hodnotu tohoto COleDateTime objektu, najdete v následujících členských funkcích:

Další informace o mezích COleDateTime hodnot najdete v článku Datum a čas: Podpora automatizace.

Příklad

// 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

Nastaví datum a čas tohoto COleDateTime objektu.

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

Parametry

nYear, nMonth, nDay, nHour, nMin, nSec
Uveďte součásti data a času, které mají být zkopírovány do tohoto COleDateTime objektu.

Návratová hodnota

Nula, pokud byla hodnota tohoto COleDateTime objektu úspěšně nastavena; jinak 1. Tato návratová hodnota je založena na výčtovém DateTimeStatus typu. Další informace naleznete v části SetStatus členské funkce.

Poznámky

Hodnoty parametrů najdete v následující tabulce:

Parametr Hranice
nYear 100 - 9999
nMonth 1 - 12
nDay 0 - 31
nHour 0 - 23
nMin 0 - 59
nSec 0 - 59

Pokud se den v měsíci přeteče, převede se na správný den následujícího měsíce a měsíc a/nebo rok se odpovídajícím způsobem zvýší. Hodnota dne nula označuje poslední den předchozího měsíce. Chování je stejné jako SystemTimeToVariantTime.

Pokud hodnota data nebo času zadaná parametry není platná, je stav tohoto objektu nastaven na neplatný a hodnota tohoto objektu se nezmění.

Tady je několik příkladů časových hodnot:

nHour nMin nSec Hodnota
1 3 3 01:03:03
23 45 0 23:45:00
25 30 0 Neplatný
9 60 0 Neplatný

Tady je několik příkladů hodnot kalendářních dat:

nYear nMonth nDay Hodnota
1995 4 15 15. dubna 1995
1789 7 14 17. července 1789
1925 2 30 Neplatný
10000 1 1 Neplatný

Pokud chcete nastavit pouze datum, přečtěte si téma COleDateTime::SetDate. Pokud chcete nastavit pouze čas, přečtěte si téma COleDateTime::SetTime.

Informace o členských funkcích, které dotazuje hodnotu tohoto COleDateTime objektu, najdete v následujících členských funkcích:

Další informace o mezích COleDateTime hodnot najdete v článku Datum a čas: Podpora automatizace.

Příklad

Podívejte se na příklad pro GetStatus.

COleDateTime::SetStatus

Nastaví stav tohoto COleDateTime objektu.

void SetStatus(DateTimeStatus status) throw();

Parametry

status
Nová hodnota stavu pro tento COleDateTime objekt.

Poznámky

Hodnota stavového parametru je definována výčtem DateTimeStatus typu, který je definován v rámci COleDateTime třídy. Podrobnosti najdete v tématu COleDateTime::GetStatus.

Upozornění

Tato funkce je určená pro pokročilé programovací situace. Tato funkce nemění data v tomto objektu. Nejčastěji se použije k nastavení stavu null nebo neplatného stavu. Operátor přiřazení (operator =) a SetDateTime nastavují stav objektu na základě zdrojových hodnot.

Příklad

Podívejte se na příklad pro GetStatus.

COleDateTime::SetTime

Nastaví čas tohoto COleDateTime objektu.

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

Parametry

nHour, nMin, nSec
Uveďte časové komponenty, které mají být zkopírovány do tohoto COleDateTime objektu.

Návratová hodnota

Nula, pokud byla hodnota tohoto COleDateTime objektu úspěšně nastavena; jinak 1. Tato návratová hodnota je založena na výčtovém DateTimeStatus typu. Další informace naleznete v části SetStatus členské funkce.

Poznámky

Čas je nastavený na zadané hodnoty. Datum je nastaveno na datum 0, což znamená 30. prosince 1899.

Hodnoty parametrů najdete v následující tabulce:

Parametr Hranice
nHour 0 - 23
nMin 0 - 59
nSec 0 - 59

Pokud hodnota času zadaná parametry není platná, stav tohoto objektu je nastaven na neplatný a hodnota tohoto objektu se nezmění.

Tady je několik příkladů časových hodnot:

nHour nMin nSec Hodnota
1 3 3 01:03:03
23 45 0 23:45:00
25 30 0 Neplatný
9 60 0 Neplatný

Pokud chcete nastavit datum i čas, přečtěte si téma COleDateTime::SetDateTime.

Informace o členských funkcích, které dotazuje hodnotu tohoto COleDateTime objektu, najdete v následujících členských funkcích:

Další informace o mezích COleDateTime hodnot najdete v článku Datum a čas: Podpora automatizace.

Příklad

Podívejte se na příklad pro SetDate.

Viz také

COleVariant – třída
CTime – třída
CTimeSpan – třída
Graf hierarchie
Sdílené třídy ATL/MFC