AsReal8

 (Available in 01 TS COM - TS_COM_DateTimeFromVariant)

Purpose

Set the date+time as a float

Syntax

? oDateTimeFromVariant:AsReal8:=fAsReal8

Arguments

fNewAsReal8
REAL8

Description

Fill a system date/time structure from a REAL8-date/time

MSDN ====

VariantTimeToSystemTime Converts the variant representation of time-to-system time values.

INT VariantTimeToSystemTime( double vtime, LPSYSTEMTIME lpSystemTime );

Parameters

vtime

The variant time that will be converted.

lpSystemTime

Pointer to the location where the converted time will be stored.

Return Value

The return value obtained from the returned INT is one of the following.

Value Meaning TRUE Success. FALSE Failure.

Comments

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 the dates prior to December 30, 1899.

Using the SYSTEMTIME structure is useful because:

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 Language Support data and time formatting functions GetDateFormat and GetTimeFormat take a SYSTEMTIME value as input. It is the default Win32 time and date data format supported by Windows NT and Windows 95.

Source

ASSIGN AsReal8( fNewAsReal8 AS REAL8 ) AS REAL8 PASCAL CLASS TS_DateTimeFromVariant
LOCAL fAsReal8 AS REAL8
   TSTrace Enter
   IF SELF:IsValidObject
      IF LOGIC( _CAST, TS_VariantTimeToSystemTime( fNewAsReal8, SELF:_SystemTime  ; ...
     ... ) )
         fAsReal8:=fNewAsReal8
      ELSE
         TSTrace Warning "!LOGIC(_CAST,TS_VariantTimeToSystemTime(fAsReal8,SELF:_SystemTime))"
         fAsReal8:=0.0
      END
   ELSE
      TSTrace Warning "!SELF:IsValidObject"
      fAsReal8:=0.0
   END
   TSTrace Leave
RETURN fAsReal8