Ver Mensaje Individual
  #4  
Antiguo Hace 2 Semanas
Jarogo08 Jarogo08 is offline
Miembro
 
Registrado: ene 2025
Posts: 78
Reputación: 1
Jarogo08 Va por buen camino
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!
Responder Con Cita