Solved

Getting the server time

Posted on 2001-06-11
6
206 Views
Last Modified: 2010-05-02
Hi everyone,

I'm working on a project where I need to get the current date/time from an NT server rather than using the local PC system clock (on Windows 95 PC's).  I've seen loads of code for doing the same thing from an NT workstation to an NT server, using NETAPI32.dll but this does not work for Win 95.

Any help gratefully received !

Jules
0
Comment
Question by:JulianDavies
6 Comments
 
LVL 3

Expert Comment

by:jrspano
ID: 6178033
from planet source code

'**************************************
'Windows API/Global Declarations for :Ge
'     t Windows NT Server Time
'**************************************


Private Type TIME_OF_DAY
    t_elapsedt As Long
    t_msecs As Long
    t_hours As Long
    t_mins As Long
    t_secs As Long
    t_hunds As Long
    t_timezone As Long
    t_tinterval As Long
    t_day As Long
    t_month As Long
    t_year As Long
    t_weekday As Long
    End Type


Private Declare Function NetRemoteTOD Lib "netapi32.dll" (ByVal server As String, buffer As Any) As Long


Private Declare Sub CopyMem Lib "kernel32" Alias "RtlMoveMemory" (pTo As Any, uFrom As Any, ByVal lSize As Long)


Private Declare Function NetApiBufferFree Lib "netapi32.dll" (ByVal Ptr As Long) As Long



'**************************************
' Name: Get Windows NT Server Time
' Description:Returns the time of day fr
'     om a Windows NT workstation or server. A
'     ccounts for time zones. Requires Windows
'     NT.
' By: Matthew Ruffell
'
' Inputs:ServerName [string] = name of t
'     arget server.
'
' Returns:Return the time of day.
'
' Assumes:Requires Windows NT.
'
' Side Effects:Noen.
'
'This code is copyrighted and has' limited warranties.Please see http://w
'     ww.Planet-Source-Code.com/xq/ASP/txtCode
'     Id.3792/lngWId.1/qx/vb/scripts/ShowCode.
'     htm'for details.'**************************************



Public Function Get_ServerTime(ByVal strServerName As String) As String
    Dim lngBuffer As Long
    Dim strServer As String
    Dim lngNet32ApiReturnCode As Long
    Dim days As Date
    Dim TOD As TIME_OF_DAY
    On Error Resume Next
    '// Get server time
    strServer = StrConv(strServerName, vbUnicode) '// Convert the server name To unicode
    lngNet32ApiReturnCode = NetRemoteTOD(strServer, lngBuffer)


    If lngNet32ApiReturnCode = 0 Then
        CopyMem TOD, ByVal lngBuffer, Len(TOD)
        days = DateSerial(70, 1, 1) + (TOD.t_elapsedt / 60 / 60 / 24) '// Convert the elapsed time since 1/1/70 to a date
        days = days - (TOD.t_timezone / 60 / 24) '// Adjust For TimeZone differences
        Get_ServerTime = days
    End If
    '// Free pointers from memory
    Call NetApiBufferFree(lngBuffer)
End Function
0
 
LVL 8

Expert Comment

by:glass_cookie
ID: 6179875
Hi!  I don't know if this is applicable, but here's the code:

Download...
http://www.vb-helper.com/Howto/wintime.zip

Description: See how long Windows has been running (2K)

That's it!

glass cookie : )
0
 
LVL 3

Expert Comment

by:jrspano
ID: 6180945
the above I gave you is the only way i know to do this, of course it doesn't work in win 95 which really doesn't help you.  Have you tried installing the netapi.dll on a win 95 machine?  It probably won't work but is worth a try.
0
Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

 
LVL 27

Accepted Solution

by:
Ark earned 200 total points
ID: 6189257
Hi
You can save dummy file on server and get this file time stamp, smth like this:

Const DummyFile = "\\servername\c\dummy.txt"
Open DummyFile for OutPut As #1
Print #1, "Test"
Close #1
ServerTime = FileDateTime(DummyFile)
Kill DummyFile

Cheers
0
 

Author Comment

by:JulianDavies
ID: 6189945
Nice piece of lateral thinking !!! Thanks Ark and thankyou to everyone else who added comments.

Jules
0
 
LVL 27

Expert Comment

by:Ark
ID: 6190098
Thanks for points, glad I could help you
0

Featured Post

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Introduction I needed to skip over some file processing within a For...Next loop in some old production code and wished that VB (classic) had a statement that would drop down to the end of the current iteration, bypassing the statements that were c…
You can of course define an array to hold data that is of a particular type like an array of Strings to hold customer names or an array of Doubles to hold customer sales, but what do you do if you want to coordinate that data? This article describes…
Get people started with the process of using Access VBA to control Excel using automation, Microsoft Access can control other applications. An example is the ability to programmatically talk to Excel. Using automation, an Access application can laun…
Show developers how to use a criteria form to limit the data that appears on an Access report. It is a common requirement that users can specify the criteria for a report at runtime. The easiest way to accomplish this is using a criteria form that a…

861 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

24 Experts available now in Live!

Get 1:1 Help Now