Thursday, April 21, 2016

Retrieve Greenwich Mean Time (GMT)

I recently had a need to retrieve the current date and time from the Internet to prevent the user from merely changing the system clock to circumvent a security check I was performing.

Turns out, I don't even need a specific web service to provide the current date and time from a web server. Most web servers already include this information when it returns a page requested by a client. All we need to do is examine the response header.

One thing to note is the date and time provided by the web server is set to Greenwich Mean Time (GMT). If you need to know the "local" time, you will have to perform additional manipulation of the result using time zone information.

The following code simply retrieves the GMT from this blog site. If you were able to add any enhancements to this code, I would really love to hear about it. Hope you find it useful.

Public Function GetGMT() As Variant
'Retrieves the Greenwich Mean Time (GMT) from theDBguy's blog server

On Error GoTo errHandler

Dim objHTTP As Object
Dim strURL As String
Dim strGMT As String

strURL = ""

Set objHTTP = CreateObject("Microsoft.XMLHTTP")

With objHTTP
    .Open "GET", strURL, False
    strGMT = .getResponseHeader("Date")

End With

If strGMT <> "" Then
    strGMT = Mid(strGMT, 6, 20)
    If IsDate(strGMT) Then
        GetGMT = CDate(strGMT)
        GetGMT = Null
    End If
End If

    Set objHTTP = Nothing
    Exit Function
    MsgBox Err.Number & ": " & Err.Description
    Resume errExit
End Function

1 comment:

  1. Doug Steele, a fellow MVP, has pointed out using this function as-is might sometimes produce an 'Access Denied' error because of web server security settings. If you get an 'Access Denied' error, you could try using a different URL. If you have your own URL, I would recommend using it. If you still get an error using your own URL, at least you'll be able to make adjustments to your web server's settings to allow access to your Access program.