SystemTimeToVariantTime function (oleauto.h)
Converts a system time to a variant representation.
INT SystemTimeToVariantTime( [in] LPSYSTEMTIME lpSystemTime, [out] DOUBLE *pvtime );
The system time.
The variant time.
The function returns TRUE on success and FALSE otherwise.
A variant time is stored as an 8-byte real value (double), representing a date between January 1, 100 and December 31, 9999, inclusive. The value 2.0 represents January 1, 1900; 3.0 represents January 2, 1900, and so on. Adding 1 to the value increments the date by a day. The fractional part of the value represents the time of day. Therefore, 2.5 represents noon on January 1, 1900; 3.25 represents 6:00 A.M. on January 2, 1900, and so on. Negative numbers represent dates prior to December 30, 1899.
The variant time resolves to one second. Any milliseconds in the input date are ignored.
When working with variant time, be mindful of the additional day added in leap years, which might produce unexpected results if unhandled. For more information, see leap year readiness.
The SYSTEMTIME structure is useful for the following reasons:
- It spans all time/date periods. MS-DOS date/time is limited to representing only those dates between 1/1/1980 and 12/31/2107.
- The date/time elements are all easily accessible without needing to do any bit decoding.
- The National Data Support data and time formatting functions GetDateFormat and GetTimeFormat take an LPSYSTEMTIME value as input.
- It is the default time/date data format supported by Windows.