¿Cómo obtener la hora de una URL con VBA?

Si copio del navegador una URL en un cuadro de texto y hago clic en un botón me muestre en otro cuadro de texto la fecha y hora del servidor". Por ejemplo,

https://www.todoexpertos.com/me 

Y hago clic en un botón, me indique en otro cuadro de texto algo como 

5/02/2023 1:53:42 p. m.

3 respuestas

Respuesta

Martha, después de los insultos a que ha sido objeto, le dejo una función de Christos Samaras

Pego la url en el campo y hago clic sobre el botón Url. Obtngo en el campo Fecha la fecha y hora del servidor.

Código del botón Url

Private Sub btnURL_Click()
 If IsNull(Me.ctlURL) Then
    MsgBox "Se requiere la url", vbInformation, "Error.."
 Else
     Me.ctlFechaURL = InternetTime(Me.ctlURL, 1)
 End If
End Sub

El primer parámetro es la url y el segundo es la diferencia de tiempo está entre -12 y 14.

Código de la función InternetTime

Function InternetTime(url As String, Optional GMTDifference As Integer) As Date
    '-----------------------------------------------------------------------------------
    'Esta función devuelve el meridiano de Greenwich obtenido de un servidor de Internet.
    'Puede usar el argumento opcional GMTDifference para sumar (o restar)
    'una hora desde la hora GMT. Por ejemplo, si llama a la función como:
    '=InternetTime(2) devolverá la hora (local) GMT + 2. Tenga en cuenta que el
    'La variable GMTDifference es un número entero.
    'Written by: Christos Samaras
    'Date:          25/09/2013
    'Last Updated:  10/01/2017
    'e-mail:        [email protected]
    'site:          https://myengineeringworld.net/////
    '-------------------------------------------------------------------------------
    'Declaring the necessary variables.
    Dim Request     As Object
    Dim ServerURL   As String
    Dim Results     As String
    Dim NetDate     As String
    Dim NetTime     As Date
    Dim LocalDate   As Date
    Dim LocalTime   As Date
    'Check if the time difference is within the accepted range.
    If GMTDifference < -12 Or GMTDifference > 14 Then
        Exit Function
    End If
    'The server address.
    'ServerURL = "http://www.timeanddate.com/worldclock/fullscreen.html?n=2"
    'ServerURL = "https://clients.cloudclusters.io/"
    ServerURL = url
    'Build the XMLHTTP object and check if was created successfully.
    On Error Resume Next
    Set Request = CreateObject("MSXML2.ServerXMLHTTP.6.0")
    If Err.Number <> 0 Then
        Exit Function
    End If
    On Error GoTo 0
    'Create the request.
    Request. Open "GET", ServerURL, False, "", ""
    'Send the request to the internet server.
    Request. Send
    'Based on the status node result, proceed accordingly.
    If Request.ReadyState = 4 Then
        'If the request succeed, the following line will return
        'something like this: Mon, 30 Sep 2013 18:33:23 GMT.
        Results = Request.getResponseHeader("date")
        'Use the Mid function to get something like: 30 Sep 2013 18:33:23.
        Results = Mid(Results, 6, Len(Results) - 9)
        'Use the Left and Right function to distinguish the date and time.
        NetDate = Left(Results, Len(Results) - 9) '30 Sep 2013
        NetTime = Right(Results, 8) '18:33:23
        'Convert the date into a valid Excel date 30 Sep 2013 -> 30/9/2013.
        'Required for countries that have some non-Latin characters at their alphabet (Greece, Russia, Serbia etc.).
        LocalDate = ConvertDate(NetDate)
        'Add the hour difference to the retrieved GMT time.
        LocalTime = NetTime + GMTDifference / 24
        'Return the local date and time.
        InternetTime = LocalDate + LocalTime
    End If
    'Release the XMLHTTP object.
    Set Request = Nothing
End Function

Solo adicione el paso de la url como parámetro. Martha así a otros no les guste sus preguntas trato de dar respuesta, lo importante es que el código puede servir a otros usuarios. No es enviar la respuesta a su correo como dice otro, sino que sea visible a todos.

Respuesta

Me sorprende infinito que cuelgues una pregunta con la cantidad de veces que tu "adorado" maestro te ha ofrecido su correo.

Julián y Enrique pensé que ustedes eran expertos, pero no, son todo lo contrario, se nota que les duele que el experto Eduardo los supere totalmente. Espero que Eduardo me dé la respuesta.

Respuesta

Supongo Julián que has apreciado que cuando el mencionado recibe un 'tirón de orejas' un poco mas tarde (asumo que el tiempo de preparar la respuesta) aparece un mensaje de uno de sus satélites con una pregunta que solo seria adecuada en otro foro (foro que también hay aquí y en el cual no participa ¿por qué será?).

Eso si, aprovecha el corto viaje para sobrevalorar las respuestas de su gurú para que no le caiga la puntuación y se deprima.

Es muy intrigante ese entorno en el que los datos van 'al alimón' en Access y en PGSql y ello requiere ambas formas de trabajo (curiosa mezcla de pescado y carne en el mismo plato).

Inestimable Martha: seria de agradecer que planteases las preguntas en el foro correcto, un poco de respeto para el resto de participantes a los que PGSql les es indiferente (y si utilizan otros entornos de datos preguntan en 'sus' respectivos foros).

(Innegablemente este mensaje recibirá por lo menos un voto negativo, pero como los puntos me importan lo mismo que las comas ...)

Enrique pensé que ustedes eran expertos, pero no, son todo lo contrario, se nota que les duele que el experto Eduardo los supere totalmente. Espero que Eduardo me dé la respuesta. Le exijo respeto cómo es eso que me trata de Inestimable, sería conveniente el administrador de este foro tomara medidas con las analfabetas e irrespetuosos.

Y seguro que seguiré preguntando, toda vez, que estoy aprendiendo PostgreSQL para sacar el mejor provecho de Access, algo que para usted y Julián está lejos.

Creo sincera y honradamente (creo que el segundo termino te es completamente desconocido) que si no eres capaz de lograr obtener ese resultado (tomando como referencia el post que aludes) deberías de buscar otra cosa en la que dilapidar tu esfuerzo.

Y si eres inteligente y es cierto que es parte de tu trabajo, procura que nadie te reconozca y asocie donde trabajas lea tus intervenciones, no sea que formes parte de los que están en paro en la que habrá mas de uno con cualidades superiores a las tuyas en cualquier ámbito (sobre todo en la capacidad de abstracción indispensable para programar en cualquier lenguaje).

La sabiduría no se obtiene publicando auto-propaganda, si se aplica el método que Uds utilizan (espero que no sea una de las lecciones básicas de ese lenguaje minoritario), basta crear clónicos y cuentas de correo-e para multiplicar 'hasta el infinito y mas allá' el numero de votos positivos aunque solo se responda con un carácter.

Si, también me agradaría que en el foro hubiera un mayor control para evitar situaciones como esta en la que se delata la paja en el ojo ajeno y se niega la viga en el propio.

Aprenda PGSql si le apetece pero en el lugar adecuado y ¡ Por favor! Demuestre que si le dan una respuesta (buena, regular o mala) aprende por lo menos a diferenciarlas.

Si realmente hubiera una causa que justificase el control de las fechas: 'un poco de queso' y el ratón a la calle, pues quien o quienes hacen trampa no son fiables (y no suelen cambiar sus métodos, sobre todo si los aprenden de sus maestros).

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas