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
, GetHour
GetMinute
, 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íhoCOleDateTime
objektu.COleDateTime(
varSrc )COleDateTime
Vytvoří objekt. Pokusí se převéstVARIANT
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éhoCOleDateTime
objektu. Pokud není, hodnota objektuCOleDateTime
je nastavena na 0 (půlnoc, 30. prosince 1899) a jeho stav je neplatný.COleDateTime(
dtSrc
)COleDateTime
Vytvoří objekt zDATE
hodnoty.COleDateTime(
timeSrc
)COleDateTime
Vytvoří objekt ztime_t
hodnoty.COleDateTime(
systimeSrc )COleDateTime
Vytvoří objekt zSYSTEMTIME
hodnoty.COleDateTime(
filetimeSrc
)COleDateTime
Vytvoří objekt zFILETIME
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 COleDateTime
naleznete 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 tentoCOleDateTime
objekt je platný.COleDateTime::invalid
Označuje, že tentoCOleDateTime
objekt je neplatný. To znamená, že jeho hodnota může být nesprávná.COleDateTime::null
Označuje, že tentoCOleDateTime
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 neboCOleVariant
hodnoty, která se nedá převést na hodnotu data a času.Pokud je jeho hodnota nastavena
time_t
z hodnoty ,SYSTEMTIME
neboFILETIME
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 tohotoCOleDateTime
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
) HodnotaDATE
se zkopíruje do tohotoCOleDateTime
objektu a její stav je nastaven na platný.operator =(
timeSrc
) Hodnotatime_t
je__time64_t
převedena a zkopírována do tohotoCOleDateTime
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
) HodnotaUDATE
je převedena a zkopírována do tohotoCOleDateTime
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. StrukturaUDATE
představuje "rozbalené" datum. Další informace naleznete ve funkci VarDateFromUdate.operator =(
filetimeSrc
) Hodnota FILETIME je převedena a zkopírována do tohotoCOleDateTime
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 COleDateTime
hodnoty . 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