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
'4/20/2016
'http://accessmvp.com/thedbguy
'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 = "http://thedbguy.blogspot.com"
Set objHTTP = CreateObject("Microsoft.XMLHTTP")
With objHTTP
.Open "GET", strURL, False
.Send
strGMT = .getResponseHeader("Date")
End With
If strGMT <> "" Then
strGMT = Mid(strGMT, 6, 20)
If IsDate(strGMT) Then
GetGMT = CDate(strGMT)
Else
GetGMT = Null
End If
End If
errExit:
Set objHTTP = Nothing
Exit Function
errHandler:
MsgBox Err.Number & ": " & Err.Description
Resume errExit
Resume
End Function
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.
ReplyDelete