DATE, typ
Typ DATE jest implementowany przy użyciu 8-bajtowej liczby zmiennoprzecinkowych. Dni są reprezentowane przez przyrosty liczby całkowitej, począwszy od 30 grudnia 1899 r., północ jako zero czasu. Wartości godziny są wyrażane jako wartość bezwzględna części ułamkowej liczby. W poniższej tabeli przedstawiono kilka dat wraz z równoważnikiem liczbowym typu DATE:
Data i godzina | Reprezentacja |
---|---|
30 grudnia 1899, północ | 0,00 |
1 stycznia 1900, północ | 2.00 |
4 stycznia 1900, północ | 5.00 |
4 stycznia 1900, 6:00 | 5,25 |
4 stycznia 1900, południe | 5.50 |
4 stycznia 1900, godz. | 5.875 |
Typ daty DATE, a także COleDateTime
klasa, reprezentuje daty i godziny jako klasyczny wiersz liczbowy. Klasa COleDateTime
zawiera kilka metod manipulowania wartościami DATE, w tym konwersję na i z innych typowych formatów dat.
Podczas pracy z tymi formatami daty i godziny w usłudze Automation należy zauważyć następujące kwestie:
Daty są określone w czasie lokalnym; synchronizację należy wykonać ręcznie podczas pracy z datami w różnych strefach czasowych.
Typy dat nie uwzględniają czasu letniego.
Oś czasu daty staje się przestarzała dla wartości daty mniejszej niż 0 (przed 30 grudnia 1899 r.). Dzieje się tak, ponieważ część całkowita wartości daty jest traktowana jako podpisana, podczas gdy część ułamkowa jest traktowana jako niepodpisane. Innymi słowy, część całkowita wartości daty może być dodatnia lub ujemna, podczas gdy część ułamkowa wartości daty jest zawsze dodawana do ogólnej daty logicznej. W poniższej tabeli przedstawiono kilka przykładów:
Data i godzina | Reprezentacja |
---|---|
27 grudnia 1899, północ | -3,00 |
28 grudnia 1899, południe | -2.50 |
28 grudnia 1899, północ | -2,00 |
29 grudnia 1899, północ | -1,00 |
30 grudnia 1899, godz. | -0.75 |
30 grudnia 1899, południe | -0,50 |
30 grudnia 1899, godz. | -0.25 |
30 grudnia 1899, północ | 0,00 |
30 grudnia 1899, godz. | 0.25 |
30 grudnia 1899, południe | 0.50 |
30 grudnia 1899, godz. | 0.75 |
31 grudnia 1899, północ | 1.00 |
1 stycznia 1900, północ | 2.00 |
1 stycznia 1900, południe | 2,50 |
2 stycznia 1900, północ | 3.00 |
Uwaga
Należy pamiętać, że ponieważ wartość 6:00 jest zawsze reprezentowana przez wartość ułamkową 0,25 niezależnie od tego, czy liczba całkowita reprezentująca dzień jest dodatnia (po 30 grudnia, 1899) lub ujemny (przed 30 grudnia 1899 r.), proste porównanie zmiennoprzecinkowe błędnie sortuje dowolną datę reprezentującą 6:00 w dniu wcześniejszym niż 12/30/1899 jako późniejsze niż data reprezentująca 7:00 w tym samym dniu.
Więcej informacji na temat problemów związanych z datą i COleDateTime
typami można znaleźć w obszarze Klasa COleDateTime i Data i godzina: pomoc techniczna automatyzacji.