Use SYSTEMTIME instead of DOS time when converting to/from VARIANTS.

SYSTEMTIME has a much larger range than DOS time and a much better precision
(1ms instead of 2s) as well.

Closes #11177.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@61843 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin 2009-09-06 14:31:10 +00:00
parent 582c3a1964
commit 69f82505ec

View File

@ -606,11 +606,10 @@ WXDLLEXPORT bool wxConvertVariantToOle(const wxVariant& variant, VARIANTARG& ole
wxDateTime date( variant.GetDateTime() );
oleVariant.vt = VT_DATE;
long dosDateTime = date.GetAsDOS();
short dosDate = short((dosDateTime & 0xFFFF0000) >> 16);
short dosTime = short(dosDateTime & 0xFFFF);
SYSTEMTIME st;
date.GetAsMSWSysTime(&st);
DosDateTimeToVariantTime(dosDate, dosTime, & oleVariant.date);
SystemTimeToVariantTime(&st, &oleVariant.date);
}
#endif
else if (type == wxT("void*"))
@ -772,13 +771,11 @@ wxConvertOleToVariant(const VARIANTARG& oleVariant, wxVariant& variant)
case VT_DATE:
#if wxUSE_DATETIME
{
unsigned short dosDate = 0;
unsigned short dosTime = 0;
VariantTimeToDosDateTime(oleVariant.date, & dosDate, & dosTime);
SYSTEMTIME st;
VariantTimeToSystemTime(oleVariant.date, &st);
long dosDateTime = (dosDate << 16) | dosTime;
wxDateTime date;
date.SetFromDOS(dosDateTime);
date.SetFromMSWSysTime(st);
variant = date;
}
#endif // wxUSE_DATETIME