Venga... ya la hice yo, la pongo aquí que mañana es festivo y estoy de buenas
Código:
Function ObtenerFechaHora() As String
Dim retorno As String = ""
'-------------------------------------------
'1 - COGEMOS LA HORA DE INTERNET
'-------------------------------------------
Try
ServicePointManager.SecurityProtocol = CType(3072, SecurityProtocolType) 'TLS 1.2
Dim webRequest As HttpWebRequest = CType(Net.WebRequest.Create("https://www2.roa.es/cgi-bin/horautc"), HttpWebRequest)
webRequest.Method = "GET"
Dim respuesta As HttpWebResponse = CType(webRequest.GetResponse(), HttpWebResponse)
If respuesta.StatusCode = HttpStatusCode.OK Then
Dim strmRespuesta As Stream = respuesta.GetResponseStream()
Dim leeRespuesta As New StreamReader(strmRespuesta)
Dim jsonRespuesta As String = leeRespuesta.ReadToEnd()
Dim ticks As Long = Long.Parse(jsonRespuesta.Replace("\n", ""))
Dim fechora As DateTime = Org.BouncyCastle.Utilities.Date.DateTimeUtilities.UnixMsToDateTime(ticks).ToLocalTime()
retorno = fechora.ToString("yyyy-MM-dd'T'HH:mm:ssK")
End If
Catch Ex As Exception
'MsgBox(Ex.Message, MsgBoxStyle.OkOnly, "ObtenerFechaHora - Internet")
End Try
'-------------------------------------------
'2 - COGEMOS LA HORA DEL SERVIDOR SQL
'-------------------------------------------
If retorno = "" Then
Try
Dim DAHora As New SqlDataAdapter
Dim DSHora As New DataSet
Dim SqlHora As String = "SELECT SYSDATETIMEOFFSET() AS FechaActual"
DSHora.Reset()
DAHora = New SqlDataAdapter(SqlHora, Conexion)
DAHora.Fill(DSHora, "Hora")
If DSHora.Tables("Hora").Rows.Count = 1 Then
Dim RowHora As DataRow = DSHora.Tables("Hora").Rows(0)
Dim fechora As DateTime = RowHora.Item("FechaActual").ToString
retorno = fechora.ToString("yyyy-MM-dd'T'HH:mm:ssK")
End If
DAHora.Dispose()
DSHora.Dispose()
Catch Ex As Exception
'MsgBox(Ex.Message, MsgBoxStyle.OkOnly, "ObtenerFechaHora - Servidor")
End Try
End If
'-------------------------------------------
'2 - COGEMOS LA HORA DEL EQUIPO
'-------------------------------------------
If retorno = "" Then
retorno = DateTime.Now.ToString("yyyy-MM-dd'T'HH:mm:ssK")
End If
Return retorno
End Function
Primero intenta cogerla de internet, si no es capaz del servidor sql y si no es capaz del equipo
La primera puede dar error si no hay internet o no responde ROA... la segunda debería devolver siempre (si no hay conexión al servidor ya no va a funcionar la aplicación)
Espero que te sirva!