No announcement yet.

NIST format (again)

  • Filter
  • Time
  • Show
Clear All
new posts

  • NIST format (again)

    Hi again,
    I'm still trying to find this perplexing problem...
    NIST Time is returning as such on 2/21/2001 for me:
    51961 01-02-21 15:08:07 00 0 0 679.4 UTC(NIST) *

    so I separate out the date/time and send it to VarDateFromStr, and it sets my clock about 20 years off...

    I posted something about this earlier and this is the only fix I can come up with..

    Does someone have code to READ the modified julian date instead of using the string??? That sure would be easier...

    What other method of converting this date to my current date format do I have???

    'Check atomic clock and get Return into UTCTime
    'For code purposes:
    UTCTime = 51961 01-02-21 15:08:07 00 0 0 679.4 UTC(NIST) * 
    UTCDate = Parse$(UTCTime, Any " ",2)
    UTCTimeOnly = Parse$(UTCTime, Any " ",3)
    ' Convert date and time to a SYSTEMTIME structure using a date VARIANT
    vbDate = StrToVbDate(UTCDate + " " + UTCTimeOnly)
    VariantTimeToSystemTime ByVal vbDate, st 
    'Now I can use SetSystemTime
    Function StrToVbDate(ByVal dt As String)  As Double
      Local x      As Long
      Local y      As String
      Local vbdate As Double
      Local lResult As Long
      Local stDay   As String
      Local styear  As String
      Local stmonth As String
    '  01-02-21
      stmonth = Mid$(dt,4,2)
      stday = Mid$(dt,7,2)
      stYear = Mid$(dt,1,2)
      Mid$(dt,1,2) = stmonth
      Mid$(dt,4,2) = stday
      Mid$(dt,7,2) = styear
      dt = uString(dt)
      lResult = VarDateFromStr(ByVal StrPtr(dt),0, 0, vbdate)
      Select Case lResult
            Case %FALSE
               Function = vbdate
            Case %DISP_E_TYPEMISMATCH 'Can't convert string to date, set 0 and invalidate
               Function = 0
            Case %DISP_E_OVERFLOW
               Function = -1
            Case %E_OUTOFMEMORY      'Throw exception here
               Function = %FALSE
      End Select
    End If
    End Function

    [This message has been edited by Scott Turchin (edited February 21, 2001).]
    Scott Turchin
    True Karate-do is this: that in daily life, one's mind and body be trained and developed in a spirit of humility; and that in critical times, one be devoted utterly to the cause of justice. -Gichin Funakoshi

  • #2
    The Windows docs on VarDateFromStr are unusually, ah, terse, so
    experimentation may be necessary. You may want to convert the year to
    four digits, in case Windows is not doing what you expect with a
    two-digit year. It might also be useful to apply %VAR_DATEVALUEONLY as
    the dwFlags parameter.

    %VAR_TIMEVALUEONLY = &H00000001???
    %VAR_DATEVALUEONLY = &H00000002???

    Tom Hanlin
    PowerBASIC Staff