
How to get Server date/time stamp?
Hi Dmitriy,
This is not yet posted at my website but is going to be part of the next
Access FAQ update.
---Posted By Dev Ashish---
Retrieve NT Server's Time
To retrieve the current time from a NT server, we can use the
NetRemoteTOD (TimeOfDay) API function.
Note: NetRemoteTOD, as with a whole bunch of other API functions, exist only
under Windows NT environment. So this code will NOT work in Windows 95 or
98.
'*************** Code Start ****************
Private Type TIME_OF_DAY_INFO
tod_elapsedt As Long 'the number of seconds _
since 00:00:00, January 1, 1970.
tod_msecs As Long 'the number of milliseconds _
from an arbitrary starting point _
(system reset).
tod_hours As Long 'current hour (0-23)
tod_mins As Long 'current minute (0-59)
tod_secs As Long 'current second (0-59)
tod_hunds As Long 'the current hundredth second (0-99).
tod_timezone As Long 'TZ of Server in Minutes from GMT
tod_tinterval As Long 'time interval for each tick of the _
clock. Each integral integer _
represents one ten-thousandth _
second (0.0001 second).
tod_day As Long 'the day of the month (1-31).
tod_month As Long 'the month of the year (1-12).
tod_year As Long 'Specifies the year.
tod_weekday As Long 'the day of the week; 0 is Sunday
End Type
Private Declare Function apiNetRemoteTOD Lib "netapi32" _
Alias "NetRemoteTOD" _
(ByVal UncServerName As String, _
BufferPtr As Long) _
As Long
Private Declare Sub sapiCopyMemory Lib "kernel32" _
Alias "RtlMoveMemory" _
(hpvDest As Any, _
hpvSource As Any, _
ByVal cbCopy As Long)
Public Function fGetServerTime(ByVal strServer As String) As String
'*******************************************
'Name: fGetServerTime [NT ONLY] (Function)
'Purpose: Returns Time of Day for NT Server
'Author: Dev Ashish
'Date: Monday, January 11, 1999
'Called by: Any
'Calls: NetRemoteTOD, RtlMoveMemory
'Inputs: Name of NT Server in \\ServerName format
'Returns: Time of day for the NT Server
'*******************************************
On Error GoTo ErrHandler
Dim tSvrTime As TIME_OF_DAY_INFO, lngRet As Long
Dim lngPtr As Long
Dim strOut As String
Dim intHoursDiff As Integer
Dim intMinsDiff As Integer
If Not Left$(strServer, 2) = "\\" Then _
Err.Raise vbObjectError + 5000
strServer = StrConv(strServer, vbUnicode)
lngRet = apiNetRemoteTOD(strServer, lngPtr)
If Not lngRet = 0 Then Err.Raise vbObjectError + 5001
Call sapiCopyMemory(tSvrTime, ByVal lngPtr, Len(tSvrTime))
With tSvrTime
intHoursDiff = .tod_timezone \ 60
intMinsDiff = .tod_timezone Mod 60
strOut = .tod_month & "/" & .tod_day & "/" _
& .tod_year & " "
If .tod_hours > 12 Then
strOut = strOut & Format(.tod_hours - 12 - intHoursDiff, "00") _
& ":" & Format$(.tod_mins - intMinsDiff, "00") & ":" _
& Format$(.tod_secs, "00") & " PM"
Else
strOut = strOut & Format(.tod_hours - intHoursDiff, "00") _
& ":" & Format$(.tod_mins - intMinsDiff, "00") & ":" _
& Format$(.tod_secs, "00") & " AM"
End If
End With
fGetServerTime = strOut
ExitHere:
Exit Function
ErrHandler:
fGetServerTime = vbNullString
Resume ExitHere
End Function
'**************** Code End *****************
HTH
--
Dev Ashish (Just my $.001)
---------------
The Access Web ( http://www.*-*-*.com/ ~dashish )
---------------
:How can I get an NT4.0 system date/time from code running on user
:workstation?
:
:Dmitriy
:
:
: