Dela via


COleDateTime-klass

Kapslar in den DATE datatyp som används i OLE-automatisering.

Syntax

class COleDateTime

Medlemmar

Offentliga konstruktorer

Namn Beskrivning
COleDateTime::COleDateTime Konstruerar ett COleDateTime objekt.

Offentliga metoder

Namn Beskrivning
COleDateTime::Format Genererar en formaterad strängrepresentation av ett COleDateTime objekt.
COleDateTime::GetAsDBTIMESTAMP Anropa den här metoden för att hämta tiden i COleDateTime objektet som en DBTIMESTAMP datastruktur.
COleDateTime::GetAsSystemTime Anropa den här metoden för att hämta tiden i COleDateTime objektet som en SYSTEMTIME-datastruktur .
COleDateTime::GetAsUDATE Anropa den här metoden för att hämta tiden i COleDateTime som en UDATE datastruktur.
COleDateTime::GetCurrentTime Skapar ett COleDateTime objekt som representerar den aktuella tiden (statisk medlemsfunktion).
COleDateTime::GetDay Returnerar den dag som det här COleDateTime objektet representerar (1–31).
COleDateTime::GetDayOfWeek Returnerar veckodagen som det här COleDateTime objektet representerar (söndag = 1).
COleDateTime::GetDayOfYear Returnerar den dag på året som det här COleDateTime objektet representerar (1 januari = 1).
COleDateTime::GetHour Returnerar den timme som det här COleDateTime objektet representerar (0–23).
COleDateTime::GetMinute Returnerar minuten som det här COleDateTime objektet representerar (0–59).
COleDateTime::GetMonth Returnerar den månad som det här COleDateTime objektet representerar (1–12).
COleDateTime::GetSecond Returnerar det andra objektet som representerar COleDateTime (0–59).
COleDateTime::GetStatus Hämtar statusen (giltigheten) för det här COleDateTime objektet.
COleDateTime::GetYear Returnerar det år som det här COleDateTime objektet representerar.
COleDateTime::P arseDateTime Läser ett datum/tid-värde från en sträng och anger värdet COleDateTimeför .
COleDateTime::SetDate Anger värdet för det här COleDateTime objektet till det angivna värdet endast för datum.
COleDateTime::SetDateTime Anger värdet för det här COleDateTime objektet till det angivna datum-/tidsvärdet.
COleDateTime::SetStatus Anger status (giltighet) för det här COleDateTime objektet.
COleDateTime::SetTime Anger värdet för det här COleDateTime objektet till det angivna värdet för endast tid.

Offentliga operatörer

Namn Beskrivning
COleDateTime::operator ==, COleDateTime::operator <osv. Jämför två COleDateTime värden.
COleDateTime::operator +, COleDateTime::operator - Lägg till och subtrahera COleDateTime värden.
COleDateTime::operator +=, COleDateTime::operator -= Lägg till och subtrahera ett COleDateTime värde från det här COleDateTime objektet.
COleDateTime::operator = Kopierar ett COleDateTime värde.
COleDateTime::operator DATE, COleDateTime::operator Date* Konverterar ett COleDateTime värde till en DATE eller en DATE*.

Medlemmar i offentliga data

Namn Beskrivning
COleDateTime::m_dt Innehåller det underliggande DATE objektet COleDateTime .
COleDateTime::m_status Innehåller status för det här COleDateTime objektet.

Anmärkningar

COleDateTime har ingen basklass.

Det är en av de möjliga typerna för VARIANT-datatypen för OLE-automatisering. Ett COleDateTime värde representerar ett absolut datum- och tidsvärde.

Typen DATE implementeras som ett flyttalsvärde. Dagar mäts från 30 december 1899 vid midnatt. I följande tabell visas några datum och deras associerade värden:

Datum Värde
29 december 1899, midnatt -1.0
29 december 1899, 06.00 -1.25
30 december 1899, midnatt 0,0
31 december 1899, midnatt 1.0
1 januari 1900, 06.00 2,25

Försiktighet

Även om dagsvärdena i tabellen ovan blir negativa före midnatt den 30 december 1899, gör inte tidsvärdena det. Till exempel representeras 6:00 AM alltid av ett bråkvärde 0,25 oavsett om heltalet som representerar dagen är positivt (efter 30 december 1899) eller negativt (före den 30 december 1899). Det innebär att en enkel flyttalsjämförelse felaktigt skulle sortera en COleDateTime som representerar 06:00 den 12/29/1899 som senare än en som representerar 07:00 på samma dag.

Klassen COleDateTime hanterar datum från 1 januari 100 till 31 december 9999. Klassen använder den gregorianska kalendern. Den COleDateTime stöder inte Julian-datum. COleDateTime ignorerar sommartid. (Se Datum och tid: Automation Support.)

Anmärkning

Du kan använda %y formatet för att hämta ett tvåsiffrigt år endast för datum från och med 1900. Om du använder %y formatet på ett datum före 1900 genererar koden ett ASSERT-fel.

Den här typen används också för att representera endast datum- eller tidsvärden. Enligt konventionen används datum 0 (30 december 1899) för tidsvärden och tiden 00:00 (midnatt) används för endast datumvärden.

Om du skapar ett COleDateTime objekt med ett datum som är mindre än 100 godkänns datumet, men efterföljande anrop till GetYear, GetMonth, GetDay, GetHour, GetMinuteoch GetSecond misslyckas och returnerar -1. Tidigare kunde du använda tvåsiffriga datum, men datumen måste vara 100 eller större i MFC 4.2 och senare.

För att undvika problem anger du ett fyrsiffrigt datum. Till exempel:

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

Grundläggande aritmetiska åtgärder för COleDateTime värdena använder den tillhörande klassen COleDateTimeSpan. COleDateTimeSpan värden definierar ett tidsintervall. Relationen mellan dessa klasser liknar den mellan CTime och CTimeSpan.

Mer information om klasserna COleDateTime och COleDateTimeSpan finns i artikeln Datum och tid: Automation Support.

Kravspecifikation

Rubrik: ATLComTime.h

COleDateTime-relationsoperatorer

Jämförelseoperatorer.

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

Parameterar

datum
Det COleDateTime objekt som ska jämföras.

Anmärkningar

Anmärkning

En ATLASSERT inträffar om någon av de två operanderna är ogiltig.

Exempel

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

Operatorerna >=, <=, >, och <, kommer att kontrollera om COleDateTime objektet är inställt på null.

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

COleDateTime::COleDateTime

Konstruerar ett COleDateTime 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();

Parameterar

dateSrc
Ett befintligt COleDateTime objekt som ska kopieras till det nya COleDateTime objektet.

varSrc
En befintlig VARIANT datastruktur (eventuellt ett COleVariant objekt) som ska konverteras till ett datum-/tidsvärde (VT_DATE) och kopieras till det nya COleDateTime objektet.

dtSrc
Ett datum/tid-värde (DATE) som ska kopieras till det nya COleDateTime objektet.

timeSrc
Ett time_t eller __time64_t -värde som ska konverteras till ett datum-/tidsvärde och kopieras till det nya COleDateTime objektet.

systimeSrc
En SYSTEMTIME struktur som ska konverteras till ett datum/tid-värde och kopieras till det nya COleDateTime objektet.

filetimeSrc
En FILETIME struktur som ska konverteras till ett datum/tid-värde och kopieras till det nya COleDateTime objektet. A FILETIME använder Universal Coordinated Time (UTC), så om du passerar en lokal tid i strukturen blir dina resultat felaktiga. Mer information finns i Filtider i Windows SDK.

nYear, nMonth, nDay, nHour, nMin, nSec
Ange datum- och tidsvärdena som ska kopieras till det nya COleDateTime objektet.

wDosDate, wDosTime
MS-DOS datum- och tidsvärden som ska konverteras till ett datum-/tidsvärde och kopieras till det nya COleDateTime objektet.

Tidsstämpel
En referens till en DBTimeStamp-struktur som innehåller den aktuella lokala tiden.

Anmärkningar

Alla dessa konstruktorer skapar nya COleDateTime objekt som initierats till det angivna värdet. I följande tabell visas giltiga intervall för varje datum- och tidskomponent:

Datum/tid-komponent Giltigt intervall
år 100 - 9999
månad 0 - 12
dag 0 - 31
timme 0 - 23
minut 0 - 59
andra 0 - 59

Observera att den faktiska övre gränsen för dagkomponenten varierar beroende på komponenterna månad och år. Mer information finns i medlemsfunktionerna SetDate eller SetDateTime .

Följande är en kort beskrivning av varje konstruktor:

  • COleDateTime( ) Konstruerar ett COleDateTime objekt som initierats till 0 (midnatt, 30 december 1899).

  • COleDateTime( dateSrc ) Konstruerar ett COleDateTime objekt från ett befintligt COleDateTime objekt.

  • COleDateTime( varSrc) Konstruerar ett COleDateTime objekt. Försöker konvertera en struktur eller ett VARIANTCOleVariant-objekt till ett datum-/tidsvärde (VT_DATE). Om konverteringen lyckas kopieras det konverterade värdet till det nya COleDateTime objektet. Om det inte är det anges objektets COleDateTime värde till 0 (midnatt, 30 december 1899) och dess status är ogiltig.

  • COleDateTime( dtSrc ) Konstruerar ett COleDateTime objekt från ett DATE värde.

  • COleDateTime( timeSrc ) Konstruerar ett COleDateTime objekt från ett time_t värde.

  • COleDateTime( systimeSrc) Konstruerar ett COleDateTime objekt från ett SYSTEMTIME värde.

  • COleDateTime( filetimeSrc ) Konstruerar ett COleDateTime objekt från ett FILETIME värde. . A FILETIME använder Universal Coordinated Time (UTC), så om du passerar en lokal tid i strukturen blir dina resultat felaktiga. Mer information finns i Filtider i Windows SDK.

  • COleDateTime( nYear, nMonth, nDay, nHour, nMin, nSec) Konstruerar ett COleDateTime objekt från de angivna numeriska värdena.

  • COleDateTime( wDosDate, wDosTime) Konstruerar ett COleDateTime objekt från de angivna MS-DOS datum- och tidsvärdena.

Mer information om time_t datatypen finns i tidsfunktionen i Run-Time-biblioteksreferensen.

Mer information finns i SYSTEMTIME- och FILETIME-strukturerna i Windows SDK.

Mer information om gränserna för COleDateTime värden finns i artikeln Datum och tid: Automation Support.

Anmärkning

Konstruktorn som använder DBTIMESTAMP parametern är endast tillgänglig när OLEDB.h ingår.

Exempel

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

Skapar en formaterad representation av datum/tid-värdet.

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

Parameterar

dwFlags
Anger någon av följande nationella flaggor:

  • LOCALE_NOUSEROVERRIDE Använd systemets standardinställningar för nationella inställningar i stället för anpassade användarinställningar.

  • VAR_TIMEVALUEONLY Ignorera datumdelen under parsningen.

  • VAR_DATEVALUEONLY Ignorera tidsdelen under parsningen.

lcid
Anger språkvariant-ID som ska användas för konverteringen. Mer information om språkidentifierare finns i Språkidentifierare.

lpszFormat
En formateringssträng som liknar formateringssträngen printf . Varje formateringskod, som föregås av ett procenttecken (%) ersätts av motsvarande COleDateTime komponent. Andra tecken i formateringssträngen kopieras oförändrade till den returnerade strängen. Mer information finns i körningsfunktionen strftime. Värdet och innebörden av formateringskoderna för Format är:

  • %H Timmar under den aktuella dagen

  • %M Minuter i den aktuella timmen

  • %S Sekunder i den aktuella minuten

  • %% Procenttecken

nFormatID
Resurs-ID:t för formatkontrollsträngen.

Returvärde

En CString som innehåller det formaterade datum-/tidsvärdet.

Anmärkningar

Om statusen för det här COleDateTime objektet är null är returvärdet en tom sträng. Om statusen är ogiltig anges retursträngen av strängresursen ATL_IDS_DATETIME_INVALID.

En kort beskrivning av de tre formulären för den här funktionen följer:

Format( dwFlags, lcid)
Det här formuläret formaterar värdet med hjälp av språkspecifikationerna (språk-ID:t) för datum och tid. Med standardparametrarna skriver det här formuläret ut datum och tid, såvida inte tidsdelen är 0 (midnatt), i så fall skrivs bara datumet ut, eller datumdelen är 0 (30 december 1899), i vilket fall den bara skriver ut tiden. Om datum/tid-värdet är 0 (30 december 1899, midnatt) skrivs det här formuläret med standardparametrarna ut midnatt.

Format( lpszFormat)
Det här formuläret formaterar värdet med hjälp av formatsträngen som innehåller särskilda formateringskoder som föregås av ett procenttecken (%), som i printf. Formateringssträngen skickas som en parameter till funktionen. Mer information om formateringskoderna finns i strftime, wcsftime i Run-Time-biblioteksreferensen.

Format( nFormatID)
Det här formuläret formaterar värdet med hjälp av formatsträngen som innehåller särskilda formateringskoder som föregås av ett procenttecken (%), som i printf. Formateringssträngen är en resurs. ID:t för den här strängresursen skickas som parameter. Mer information om formateringskoderna finns i strftime, wcsftime i Run-Time-biblioteksreferensen.

Exempel

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

Anropa den här metoden för att hämta tiden i COleDateTime objektet som en DBTIMESTAMP datastruktur.

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

Parameterar

Tidsstämpel
En referens till en DBTimeStamp-struktur .

Returvärde

Nonzero om det lyckas; annars 0.

Anmärkningar

Lagrar den resulterande tiden i den refererade timeStamp-strukturen . Datastrukturen DBTIMESTAMP som initieras av den här funktionen har dess fraction medlem inställd på noll.

Exempel

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

COleDateTime::GetAsSystemTime

Anropa den här metoden för att hämta tiden i COleDateTime objektet som en SYSTEMTIME datastruktur.

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

Parameterar

sysTime
En referens till en SYSTEMTIME-struktur för att ta emot det konverterade datum-/tidsvärdet från COleDateTime objektet.

Returvärde

Returnerar TRUE om det lyckas. FALSE om konverteringen misslyckas, eller om objektet COleDateTime är NULL eller ogiltigt.

Anmärkningar

GetAsSystemTime lagrar den resulterande tiden i det refererade sysTime-objektet . Datastrukturen SYSTEMTIME som initieras av den här funktionen har dess wMilliseconds medlem inställd på noll.

Mer information om statusinformationen som finns i ett COleDateTime objekt finns i GetStatus.

COleDateTime::GetAsUDATE

Anropa den här metoden för att hämta tiden i COleDateTime objektet som en UDATE datastruktur.

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

Parameterar

uDate
En referens till en UDATE struktur för att ta emot det konverterade datum-/tidsvärdet från COleDateTime objektet.

Returvärde

Returnerar TRUE om det lyckas. FALSE om konverteringen misslyckas, eller om objektet COleDateTime är NULL eller ogiltigt.

Anmärkningar

En UDATE struktur representerar ett "uppackat" datum.

COleDateTime::GetCurrentTime

Anropa den här statiska medlemsfunktionen för att returnera det aktuella datum-/tidsvärdet.

static COleDateTime WINAPI GetCurrentTime() throw();

Exempel

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

Hämtar den dag i månaden som representeras av det här datum-/tidsvärdet.

int GetDay() const throw();

Returvärde

Den dag i månaden som representeras av värdet för det här COleDateTime objektet eller COleDateTime::error om dagen inte kunde hämtas.

Anmärkningar

Giltigt returvärdesintervall mellan 1 och 31.

Information om andra medlemsfunktioner som frågar efter värdet för det här COleDateTime objektet finns i följande medlemsfunktioner:

Exempel

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

Hämtar veckodagen som representeras av det här datum-/tidsvärdet.

int GetDayOfWeek() const throw();

Returvärde

Veckodagen som representeras av värdet för det här COleDateTime objektet eller COleDateTime::error om veckodagen inte kunde hämtas.

Anmärkningar

Giltiga returvärden sträcker sig mellan 1 och 7, där 1=söndag, 2=måndag och så vidare.

Information om andra medlemsfunktioner som frågar efter värdet för det här COleDateTime objektet finns i följande medlemsfunktioner:

Exempel

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

COleDateTime::GetDayOfYear

Hämtar den dag på året som representeras av det här datum-/tidsvärdet.

int GetDayOfYear() const throw();

Returvärde

Den dag på året som representeras av värdet för det här COleDateTime objektet eller COleDateTime::error om dagen på året inte kunde erhållas.

Anmärkningar

Giltiga returvärden sträcker sig mellan 1 och 366, där 1 januari = 1.

Information om andra medlemsfunktioner som frågar efter värdet för det här COleDateTime objektet finns i följande medlemsfunktioner:

Exempel

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

COleDateTime::GetHour

Hämtar den timme som representeras av det här datum-/tidsvärdet.

int GetHour() const throw();

Returvärde

Timmen som representeras av värdet för det här COleDateTime objektet eller COleDateTime::error om timmen inte kunde hämtas.

Anmärkningar

Giltigt returvärdesintervall mellan 0 och 23.

Information om andra medlemsfunktioner som frågar efter värdet för det här COleDateTime objektet finns i följande medlemsfunktioner:

Exempel

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

Hämtar minuten som representeras av det här datum-/tidsvärdet.

int GetMinute() const throw();

Returvärde

Minuten som representeras av värdet för det här COleDateTime objektet eller COleDateTime::error om minuten inte kunde hämtas.

Anmärkningar

Giltigt returvärdesintervall mellan 0 och 59.

Information om andra medlemsfunktioner som frågar efter värdet för det här COleDateTime objektet finns i följande medlemsfunktioner:

Exempel

Se exemplet för GetHour.

COleDateTime::GetMonth

Hämtar den månad som representeras av det här datum-/tidsvärdet.

int GetMonth() const throw();

Returvärde

Månaden som representeras av värdet för det här COleDateTime objektet eller COleDateTime::error om månaden inte kunde hämtas.

Anmärkningar

Giltigt returvärdesintervall mellan 1 och 12.

Information om andra medlemsfunktioner som frågar efter värdet för det här COleDateTime objektet finns i följande medlemsfunktioner:

Exempel

Se exemplet för GetDay.

COleDateTime::GetSecond

Hämtar den andra som representeras av det här datum-/tidsvärdet.

int GetSecond() const throw();

Returvärde

Den andra representeras av värdet för det här COleDateTime objektet eller COleDateTime::error om det andra inte kunde hämtas.

Anmärkningar

Giltigt returvärdesintervall mellan 0 och 59.

Anmärkning

Klassen COleDateTime stöder inte skottsekunder.

Mer information om implementeringen för COleDateTimefinns i artikeln Datum och tid: Automation Support.

Information om andra medlemsfunktioner som frågar efter värdet för det här COleDateTime objektet finns i följande medlemsfunktioner:

Exempel

Se exemplet för GetHour.

COleDateTime::GetStatus

Hämtar status (giltighet) för ett visst COleDateTime objekt.

DateTimeStatus GetStatus() const throw();

Returvärde

Returnerar status för det här COleDateTime värdet. Om du anropar GetStatus ett COleDateTime objekt som har konstruerats med standardvärdet returneras det giltigt. Om du anropar GetStatus ett COleDateTime objekt som initierats med konstruktorn inställt på null GetStatus returneras null.

Anmärkningar

Returvärdet definieras av den DateTimeStatus uppräknade typen, som definieras i COleDateTime klassen.

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

En kort beskrivning av dessa statusvärden finns i följande lista:

  • COleDateTime::error Anger att ett fel uppstod när en del av datum-/tidsvärdet skulle hämtas.

  • COleDateTime::valid Anger att det här COleDateTime objektet är giltigt.

  • COleDateTime::invalid Anger att det här COleDateTime objektet är ogiltigt, dvs. dess värde kan vara felaktigt.

  • COleDateTime::null Anger att det här COleDateTime objektet är null, d.v.s. att inget värde har angetts för det här objektet. (Det här är "null" i databaskänslan "har inget värde", i motsats till C++ NULL.)

Statusen för ett COleDateTime objekt är ogiltig i följande fall:

  • Om värdet anges från ett värde eller VARIANT ett COleVariant värde som inte kunde konverteras till ett datum-/tidsvärde.

  • Om dess värde anges från ett time_t, SYSTEMTIMEeller FILETIME -värde som inte kunde konverteras till ett giltigt datum-/tidsvärde.

  • Om värdet anges av SetDateTime med ogiltiga parametervärden.

  • Om det här objektet har drabbats av ett spill eller underflöde under en aritmisk tilldelningsåtgärd, nämligen += eller -=.

  • Om ett ogiltigt värde har tilldelats det här objektet.

  • Om statusen för det här objektet uttryckligen har angetts till ogiltig med hjälp av SetStatus.

Mer information om de åtgärder som kan ange statusen som ogiltig finns i följande medlemsfunktioner:

Mer information om gränserna för COleDateTime värden finns i artikeln Datum och tid: Automation Support.

Exempel

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

Hämtar det år som representeras av det här datum-/tidsvärdet.

int GetYear() const throw();

Returvärde

Året som representeras av värdet för det här COleDateTime objektet eller COleDateTime::error om året inte kunde erhållas.

Anmärkningar

Giltiga returvärden sträcker sig mellan 100 och 9999, vilket inkluderar århundradet.

Information om andra medlemsfunktioner som frågar efter värdet för det här COleDateTime objektet finns i följande medlemsfunktioner:

Mer information om gränserna för COleDateTime värden finns i artikeln Datum och tid: Automation Support.

Exempel

Se exemplet för GetDay.

COleDateTime::m_dt

Den underliggande DATE strukturen för det här COleDateTime objektet.

DATE m_dt;

Anmärkningar

Försiktighet

Om du ändrar värdet i objektet DATE som används av pekaren som returneras av den här funktionen ändras värdet för det här COleDateTime objektet. Det ändrar inte statusen för det här COleDateTime objektet.

Mer information om implementeringen av DATE objektet finns i artikeln Datum och tid: Automation Support.

COleDateTime::m_status

Innehåller status för det här COleDateTime objektet.

DateTimeStatus m_status;

Anmärkningar

Typen av den här datamedlemmen är den uppräknade typen DateTimeStatus, som definieras i COleDateTime klassen. Mer information finns i COleDateTime::GetStatus.

Försiktighet

Den här datamedlemmen är avsedd för avancerade programmeringssituationer. Du bör använda de infogade medlemsfunktionerna GetStatus och SetStatus. Se SetStatus mer information om hur du uttryckligen anger den här datamedlemmen.

COleDateTime::operator =

Kopierar ett COleDateTime värde.

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

Anmärkningar

Dessa överlagrade tilldelningsoperatorer kopierar källvärdet för datum/tid till det här COleDateTime objektet. En kort beskrivning av var och en av dessa överlagrade tilldelningsoperatorer följer:

  • operator =(dateSrc) Värdet och statusen för operand kopieras till det här COleDateTime objektet.

  • operator =(varSrc) Om konverteringen av VARIANT-värdet (eller COleVariant-objektet ) till ett datum/tid (VT_DATE) lyckas kopieras det konverterade värdet till det här COleDateTime objektet och dess status är inställd på giltig. Om konverteringen inte lyckas anges värdet för det här objektet till noll (30 december 1899, midnatt) och dess status är ogiltig.

  • operator =(dtSrc) Värdet DATE kopieras till det här COleDateTime objektet och dess status är inställd på giltig.

  • operator =(timeSrc) Eller-värdet time_t__time64_t konverteras och kopieras till det här COleDateTime objektet. Om konverteringen lyckas är statusen för det här objektet inställd på giltig. om det misslyckas är det inställt på ogiltigt.

  • operator =(systimeSrc)SYSTEMTIME-värdet konverteras och kopieras till det här COleDateTime objektet. Om konverteringen lyckas är statusen för det här objektet inställd på giltig. om det misslyckas är det inställt på ogiltigt.

  • operator =(uDate) Värdet UDATE konverteras och kopieras till det här COleDateTime objektet. Om konverteringen lyckas är statusen för det här objektet inställd på giltig. om det misslyckas är det inställt på ogiltigt. En UDATE struktur representerar ett "uppackat" datum. Mer information finns i funktionen VarDateFromUdate.

  • operator =(filetimeSrc)FILETIME-värdet konverteras och kopieras till det här COleDateTime objektet. Om konverteringen lyckas är statusen för det här objektet inställd på giltig. annars är den inställd på ogiltig. FILETIME använder Universal Coordinated Time (UTC), så om du skickar en UTC-tid i strukturen konverteras dina resultat från UTC-tid till lokal tid och lagras som varianttid. Det här beteendet är detsamma som i Visual C++ 6.0 och Visual C++.NET 2003 SP2. Mer information finns i Filtider i Windows SDK.

Mer information finns i posten VARIANT i Windows SDK.

Mer information om time_t datatypen finns i tidsfunktionen i Run-Time-biblioteksreferensen.

Mer information finns i SYSTEMTIME- och FILETIME-strukturerna i Windows SDK.

Mer information om gränserna för COleDateTime värden finns i artikeln Datum och tid: Automation Support.

COleDateTime::operator +, -

Lägg till och subtrahera ColeDateTime värden.

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

Anmärkningar

COleDateTime objekt representerar absoluta tider. COleDateTimeSpan-objekt representerar relativa tider. Med de två första operatorerna kan du lägga till och subtrahera ett COleDateTimeSpan värde från ett COleDateTime värde. Med den tredje operatorn kan du subtrahera ett COleDateTime värde från ett annat för att ge ett COleDateTimeSpan värde.

Om någon av operanderna är null är statusen för det resulterande COleDateTime värdet null.

Om det resulterande COleDateTime värdet ligger utanför gränserna för acceptabla värden är värdets COleDateTime status ogiltig.

Om någon av operanderna är ogiltig och den andra inte är null är statusen för det resulterande COleDateTime värdet ogiltig.

Operatorerna + och - kommer att kontrollera om COleDateTime objektet är inställt på null. Ett exempel finns i COleDateTime-relationsoperatorer .

Mer information om giltiga, ogiltiga och null-statusvärden finns i m_status medlemsvariabel.

Mer information om gränserna för COleDateTime värden finns i artikeln Datum och tid: Automation Support.

Exempel

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

Lägg till och subtrahera ett ColeDateTime värde från det här COleDateTime objektet.

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

Anmärkningar

Med de här operatorerna kan du lägga till och subtrahera ett COleDateTimeSpan värde till och från detta COleDateTime. Om någon av operanderna är null är statusen för det resulterande COleDateTime värdet null.

Om det resulterande COleDateTime värdet ligger utanför gränserna för acceptabla värden är värdets COleDateTime status ogiltig.

Om någon av operanderna är ogiltig och andra inte är null är statusen för det resulterande COleDateTime värdet ogiltig.

Mer information om giltiga, ogiltiga och null-statusvärden finns i m_status medlemsvariabel.

Operatorerna += och -= kommer att kontrollera om COleDateTime objektet är inställt på null. Ett exempel finns i COleDateTime-relationsoperatorer .

Mer information om gränserna för COleDateTime värden finns i artikeln Datum och tid: Automation Support.

COleDateTime::operator DATE

Konverterar ett ColeDateTime värde till en DATE.

operator DATE() const throw();

Anmärkningar

Den här operatorn returnerar ett DATE objekt vars värde kopieras från det här COleDateTime objektet. Mer information om implementeringen av DATE objektet finns i artikeln Datum och tid: Automation Support.

Operatorn DATE kommer att kontrollera om COleDateTime objektet är inställt på null. Ett exempel finns i COleDateTime-relationsoperatorer .

COleDateTime::P arseDateTime

Parsar en sträng för att läsa ett datum-/tidsvärde.

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

Parameterar

lpszDate
En pekare till den null-avslutade strängen som ska parsas. Mer information finns i Kommentarer.

dwFlags
Anger flaggor för nationella inställningar och parsning. En eller flera av följande flaggor:

  • LOCALE_NOUSEROVERRIDE Använd systemets standardinställningar för nationella inställningar i stället för anpassade användarinställningar.

  • VAR_TIMEVALUEONLY Ignorera datumdelen under parsningen.

  • VAR_DATEVALUEONLY Ignorera tidsdelen under parsningen.

lcid
Anger språkvariant-ID som ska användas för konverteringen.

Returvärde

Returnerar TRUE om strängen har konverterats till ett datum-/tidsvärde, annars FALSE.

Anmärkningar

Om strängen har konverterats till ett datum-/tidsvärde anges värdet för det här COleDateTime objektet till det värdet och dess status är giltig.

Anmärkning

Årsvärden måste ligga mellan 100 och 9999, inklusive.

Parametern lpszDate kan ha en mängd olika format. Följande strängar innehåller till exempel godkända datum-/tidsformat:

"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

Språkvariant-ID:t påverkar också om strängformatet är acceptabelt för konvertering till ett datum-/tidsvärde.

När det gäller VAR_DATEVALUEONLY anges tidsvärdet till tid 0 eller midnatt. För VAR_TIMEVALUEONLY anges datumvärdet till datum 0, vilket betyder 30 december 1899.

Om strängen inte kunde konverteras till ett datum/tid-värde eller om det fanns ett numeriskt spill är objektets COleDateTime status ogiltig.

Mer information om gränser och implementering för COleDateTime värden finns i artikeln Datum och tid: Automation Support.

COleDateTime::SetDate

Anger datumet för det här COleDateTime objektet.

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

Parameterar

nYear
Anger året som ska kopieras till det här COleDateTime objektet.

nMonth
Anger den månad som ska kopieras till det här COleDateTime objektet.

nDay
Anger den dag då objektet ska kopieras COleDateTime .

Returvärde

Noll om värdet för det här COleDateTime objektet har angetts, annars 1. Det här returvärdet baseras på den DateTimeStatus uppräknade typen. Mer information finns i funktionen SetStatus-medlem .

Anmärkningar

Datumet anges till de angivna värdena. Tiden är inställd på tid 0, midnatt.

Se följande tabell för gränser för parametervärdena:

Parameter Gränser
nYear 100 - 9999
nMonth 1 - 12
nDay 0 - 31

Om dagen i månaden flödar över konverteras den till rätt dag i nästa månad och månaden och/eller året ökas därefter. Ett dagsvärde på noll anger den sista dagen i föregående månad. Beteendet är detsamma som SystemTimeToVariantTime.

Om det datumvärde som anges av parametrarna inte är giltigt anges objektets status till COleDateTime::invalid. Du bör använda GetStatus för att kontrollera värdets DATE giltighet och bör inte anta att värdet för m_dt förblir oförändrad.

Här är några exempel på datumvärden:

nYear nMonth nDay Värde
2000 2 29 den 29 februari 2000
1776 7 4 den 4 juli 1776
1925 4 35 35 april 1925 (ogiltigt datum)
10 000 1 1 1 januari 10000 (ogiltigt datum)

Information om hur du anger både datum och tid finns i COleDateTime::SetDateTime.

Information om medlemsfunktioner som frågar efter värdet för det här COleDateTime objektet finns i följande medlemsfunktioner:

Mer information om gränserna för COleDateTime värden finns i artikeln Datum och tid: Automation Support.

Exempel

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

Anger datum och tid för det här COleDateTime objektet.

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

Parameterar

nYear, nMonth, nDay, nHour, nMin, nSec
Ange de datum- och tidskomponenter som ska kopieras till det här COleDateTime objektet.

Returvärde

Noll om värdet för det här COleDateTime objektet har angetts, annars 1. Det här returvärdet baseras på den DateTimeStatus uppräknade typen. Mer information finns i funktionen SetStatus-medlem .

Anmärkningar

Se följande tabell för gränser för parametervärdena:

Parameter Gränser
nYear 100 - 9999
nMonth 1 - 12
nDay 0 - 31
nHour 0 - 23
nMin 0 - 59
nSec 0 - 59

Om dagen i månaden flödar över konverteras den till rätt dag i nästa månad och månaden och/eller året ökas därefter. Ett dagsvärde på noll anger den sista dagen i föregående månad. Beteendet är detsamma som SystemTimeToVariantTime.

Om det datum- eller tidsvärde som anges av parametrarna inte är giltigt anges objektets status till ogiltig och värdet för det här objektet ändras inte.

Här är några exempel på tidsvärden:

nHour nMin nSec Värde
1 3 3 01:03:03
23 45 0 23:45:00
25 30 0 Ogiltig
9 60 0 Ogiltig

Här är några exempel på datumvärden:

nYear nMonth nDay Värde
1995 4 15 den 15 april 1995
1789 7 14 den 17 juli 1789
1925 2 30 Ogiltig
10 000 1 1 Ogiltig

Information om hur du anger endast datum finns i COleDateTime::SetDate. Information om hur du anger endast tid finns i COleDateTime::SetTime.

Information om medlemsfunktioner som frågar efter värdet för det här COleDateTime objektet finns i följande medlemsfunktioner:

Mer information om gränserna för COleDateTime värden finns i artikeln Datum och tid: Automation Support.

Exempel

Se exemplet för GetStatus.

COleDateTime::SetStatus

Anger status för det här COleDateTime objektet.

void SetStatus(DateTimeStatus status) throw();

Parameterar

status
Det nya statusvärdet för det här COleDateTime objektet.

Anmärkningar

Värdet för statusparametern definieras av den DateTimeStatus uppräknade typen, som definieras i COleDateTime klassen. Mer information finns i COleDateTime::GetStatus .

Försiktighet

Den här funktionen är avsedd för avancerade programmeringssituationer. Den här funktionen ändrar inte data i det här objektet. Den används oftast för att ange statusen till null eller ogiltig. Tilldelningsoperatorn (operatorn =) och SetDateTime anger status för objektet baserat på källvärdena.

Exempel

Se exemplet för GetStatus.

COleDateTime::SetTime

Anger tiden för det här COleDateTime objektet.

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

Parameterar

nHour, nMin, nSec
Ange tidskomponenter som ska kopieras till det här COleDateTime objektet.

Returvärde

Noll om värdet för det här COleDateTime objektet har angetts, annars 1. Det här returvärdet baseras på den DateTimeStatus uppräknade typen. Mer information finns i funktionen SetStatus-medlem .

Anmärkningar

Tiden är inställd på de angivna värdena. Datumet är inställt på datum 0, vilket betyder 30 december 1899.

Se följande tabell för gränser för parametervärdena:

Parameter Gränser
nHour 0 - 23
nMin 0 - 59
nSec 0 - 59

Om det tidsvärde som anges av parametrarna inte är giltigt anges objektets status till ogiltig och värdet för det här objektet ändras inte.

Här är några exempel på tidsvärden:

nHour nMin nSec Värde
1 3 3 01:03:03
23 45 0 23:45:00
25 30 0 Ogiltig
9 60 0 Ogiltig

Information om hur du anger både datum och tid finns i COleDateTime::SetDateTime.

Information om medlemsfunktioner som frågar efter värdet för det här COleDateTime objektet finns i följande medlemsfunktioner:

Mer information om gränserna för COleDateTime värden finns i artikeln Datum och tid: Automation Support.

Exempel

Se exemplet för SetDate.

Se även

COleVariant-klass
CTime-klass
CTimeSpan-klass
hierarkidiagram
DELADE ATL/MFC-klasser