Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
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 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 |
|---|---|
| rok | 100 - 9999 |
| měs | 0 - 12 |
| den | 0 - 31 |
| hodina | 0 - 23 |
| minuta | 0 - 59 |
| sekunda | 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()COleDateTimeVytvoří objekt inicializovaný na 0 (půlnoc 30. prosince 1899).COleDateTime(dateSrc)COleDateTimeVytvoří objekt z existujícíhoCOleDateTimeobjektu.COleDateTime(varSrc)COleDateTimeVytvoří objekt. Pokusí se převéstVARIANTstrukturu nebo COleVariant objekt na hodnotu data a času (VT_DATE). Pokud je převod úspěšný, převedená hodnota se zkopíruje do novéhoCOleDateTimeobjektu. Pokud není, hodnota objektuCOleDateTimeje nastavena na 0 (půlnoc, 30. prosince 1899) a jeho stav je neplatný.COleDateTime(dtSrc)COleDateTimeVytvoří objekt zDATEhodnoty.COleDateTime(timeSrc)COleDateTimeVytvoří objekt ztime_thodnoty.COleDateTime(systimeSrc)COleDateTimeVytvoří objekt zSYSTEMTIMEhodnoty.COleDateTime(filetimeSrc)COleDateTimeVytvoří objekt zFILETIMEhodnoty. . PoužíváFILETIMEuniverzá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říCOleDateTimeobjekt ze zadaných číselných hodnot.COleDateTime(wDosDate,wDosTime)COleDateTimeVytvoří 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.
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 :
%HHodiny v aktuálním dni%MPočet minut v aktuální hodině%SSekundy 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 GetStatusCOleDateTime objekt vytvořený s výchozím nastavením, vrátí platnost. Pokud voláte GetStatusCOleDateTime 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::errorOznačuje, že při pokusu o získání části hodnoty data a času došlo k chybě.COleDateTime::validOznačuje, že tentoCOleDateTimeobjekt je platný.COleDateTime::invalidOznačuje, že tentoCOleDateTimeobjekt je neplatný. To znamená, že jeho hodnota může být nesprávná.COleDateTime::nullOznačuje, že tentoCOleDateTimeobjekt 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á
VARIANTz hodnoty neboCOleVarianthodnoty, která se nedá převést na hodnotu data a času.Pokud je jeho hodnota nastavena
time_tz hodnoty ,SYSTEMTIMEneboFILETIMEhodnotu, která nelze převést na platnou hodnotu data a času.Pokud je jeho hodnota nastavena
SetDateTimeneplatný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 tohotoCOleDateTimeobjektu.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
COleDateTimeobjektu 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) HodnotaDATEse zkopíruje do tohotoCOleDateTimeobjektu a její stav je nastaven na platný.operator =(
timeSrc) Hodnotatime_tje__time64_tpřevedena a zkopírována do tohotoCOleDateTimeobjektu. 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
COleDateTimeobjektu. 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) HodnotaUDATEje převedena a zkopírována do tohotoCOleDateTimeobjektu. Pokud je převod úspěšný, stav tohoto objektu je nastaven na platný; v případě neúspěchu je nastavena na neplatnou hodnotu. StrukturaUDATEpředstavuje "rozbalené" datum. Další informace naleznete ve funkci VarDateFromUdate.operator =(
filetimeSrc) Hodnota FILETIME je převedena a zkopírována do tohotoCOleDateTimeobjektu. Pokud je převod úspěšný, stav tohoto objektu je nastaven na platný; v opačném případě je nastavena na neplatnou hodnotu.FILETIMEpouží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.
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) |
| 10 000 | 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 |
| dvacet tři | 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ý |
| 10 000 | 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
stav
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 |
| dvacet tři | 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