Fecha y Hora desde la Nube

Fecha y Hora desde la Nube

Postby JoseAlvarez » Wed Dec 11, 2024 3:56 am

Hola a todos,

Necesito obtener la fecha y hora de mi pais (zona horaria Caracas-venezuela) desde la nube, de un servidor publico.

Alguna idea?

Le pregunte a la IA copilot, pero el codigo que me da arroja errores y confieso que no tengo conocimientos para corregirlo. Acá dejo el codigo

Code: Select all  Expand view  RUN
PROCEDURE GetTimeCaracas()
    local url, response, json, timeData
    local url = "http://api.worldtimeapi.org/api/timezone/America/Caracas"
    local HttpClient = NEW HttpClient()
    response = HttpClient.GET(url)
    IF response.status = 200 THEN
        json = response.content
        timeData = json["datetime"]
        MESSAGEBOX("Fecha y Hora en Caracas:", timeData)
     ELSE
         MESSAGEBOX("Error al obtener la fecha y hora:", response.status)
    ENDIF

ENDPROCEDURE
 


o quizás haya una manera de obtenerlo desde el mismo windows. Lo que se necesita es tener el valor de una fuente confable y no desde la misma PC en donde se ejecuta la aplicación, ya que puede ser cambiada con intencion del usuario o con el desgaste de la bateria del cmos.

Eso es lo que se quiere evitar.

Puedo obtenerla con Mysql desde mi servidor de pago, pero no quiero "amarrar" al cliente con nada mío.

Agradezco la Ayuda
"Los errores en programación, siempre están entre la silla y el teclado..."

Fwh 19.06 32 bits + Harbour 3.2 + Borland 7.4 + MariaDB + TDolphin

Carora, Estado Lara, Venezuela.
User avatar
JoseAlvarez
 
Posts: 805
Joined: Sun Nov 09, 2014 5:01 pm

Re: Fecha y Hora desde la Nube

Postby JoseAlvarez » Wed Dec 11, 2024 4:22 am

Listo amigos, conseguí la solución acá mismo en el foro. Dejo el hilo, en la respuesta del master joao

https://forums.fivetechsupport.com/viewtopic.php?f=6&t=33555

Gracias a todos!
Gracias Master Joao
"Los errores en programación, siempre están entre la silla y el teclado..."

Fwh 19.06 32 bits + Harbour 3.2 + Borland 7.4 + MariaDB + TDolphin

Carora, Estado Lara, Venezuela.
User avatar
JoseAlvarez
 
Posts: 805
Joined: Sun Nov 09, 2014 5:01 pm

Re: Fecha y Hora desde la Nube

Postby karinha » Thu Dec 12, 2024 12:19 pm

GREAT my dear friend!

Regards, saludos.
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
karinha
 
Posts: 7872
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: Fecha y Hora desde la Nube

Postby VitalJavier » Thu Dec 12, 2024 5:54 pm

Le dije a copilot que tenia varios errores
y termino en esto y funciono:

Code: Select all  Expand view  RUN

function Ret_Date_Web()
    LOCAL cGeoUrl := "http://ip-api.com/json/"
    LOCAL cGeoResponse := HttpGet(cGeoUrl)
    LOCAL cCity := ExtractField(cGeoResponse, "timezone")   
   LOCAL cUrl := "http://worldtimeapi.org/api/timezone/"+cCity
   LOCAL cResponse := HttpGet(cUrl)
   LOCAL cFecha, cHora, cDateTime
   
    // Buscar el campo "datetime" en el JSON devuelto
    cDateTime := ExtractField(cResponse, "datetime")

    // Obtener fecha y hora
    cFecha := SubStr(cDateTime, 1, 10)  // Fecha en formato YYYY-MM-DD
    cHora := SubStr(cDateTime, 12, 8)  // Hora en formato HH:MM:SS

    // Mostrar fecha y hora en un mensaje
    MsgInfo("Fecha: " + cFecha + CRLF + "Hora: " + cHora, "Fecha y Hora de la Ciudad de México")

    RETURN NIL

function HttpGet(cUrl)
    LOCAL oHttp := CreateObject("Msxml2.XMLHTTP")
    LOCAL cResponse
    oHttp:Open("GET", cUrl, .F.)
    oHttp:Send()
    IF oHttp:Status = 200
        cResponse := oHttp:ResponseText
    ELSE
        cResponse := ""
    ENDIF
    Release oHttp
RETURN cResponse

function ExtractField(cResponse, cField)
    LOCAL nPos, nStart, nEnd, cValue
    nPos = At('"' + cField + '":', cResponse)
    IF nPos > 0
        nStart = nPos + Len(cField) + 3
        nEnd = At(',', cResponse, nStart) - 1
        IF nEnd < 0
            nEnd = At('}', cResponse, nStart) - 1
        ENDIF
        cValue = SubStr(cResponse, nStart, nEnd - nStart + 1)
        cValue = StrTran(cValue, '"', '')  // Eliminar comillas dobles
    ELSE
        cValue = ""
    ENDIF
RETURN cValue

 
User avatar
VitalJavier
 
Posts: 242
Joined: Mon Jun 10, 2013 6:40 pm

Re: Fecha y Hora desde la Nube

Postby karinha » Fri Dec 13, 2024 1:18 pm

Excelente Vital,

Code: Select all  Expand view  RUN

#include "FiveWin.ch"

FUNCTION Main()

   __SetCentury( "ON" )
   Set( 4, if(__SetCentury(), "dd/mm/yyyy", "dd/mm/yy") )
   Set( 207, "HH:MM:SS" )
   Set( 5, YEAR( DATE() ) - 30 )

   Ret_Date_Web()

RETURN NIL

FUNCTION Ret_Date_Web()

   LOCAL WDIA, WMES, WANO, WFECHA
   LOCAL cGeoUrl      := "http://ip-api.com/json/"
   LOCAL cGeoResponse := HttpGet( cGeoUrl )
   LOCAL cCity        := ExtractField( cGeoResponse, "timezone" )
   LOCAL cUrl         := "http://worldtimeapi.org/api/timezone/" + cCity
   LOCAL cResponse    := HttpGet( cUrl )
   LOCAL cFecha, cHora, cDateTime

   // Buscar el campo "datetime" en el JSON devuelto
   cDateTime := ExtractField( cResponse, "datetime" )

   // Obtener fecha y hora
   cFecha := SubStr( cDateTime, 1, 10 )  // Fecha en formato YYYY-MM-DD
   cHora  := SubStr( cDateTime, 12, 8 )  // Hora en formato HH:MM:SS

   WDIA   := SUBST( cFecha,  9,  2 )

   // ? WDIA

   WMES   := SUBST( cFecha,  6,  2 )

   // ? WMES

   WANO   := SUBST( cFecha,  1,  4 )

   // ? WANO

   WFECHA := WDIA +"/"+ WMES  +"/"+ WANO + " - " + cHora + " - " + ;
             "Fecha y Hora de la Ciudad de México"

   ? WFECHA

   /*
   // Mostrar fecha y hora en un mensaje
   MsgInfo( "Fecha: " + cFecha + CRLF + "Hora: " + cHora, ;
            "Fecha y Hora de la Ciudad de México" )
   */


RETURN NIL

FUNCTION HttpGet( cUrl )

   LOCAL oHttp := CreateObject( "Msxml2.XMLHTTP" )
   LOCAL cResponse

   oHttp:Open( "GET", cUrl, .F. )
   oHttp:Send()

   IF oHttp:STATUS = 200

      cResponse := oHttp:ResponseText

   ELSE

      cResponse := ""

   ENDIF

   __MVXRelease( "oHttp" )
   oHttp := NIL

RETURN( cResponse )

FUNCTION ExtractField( cResponse, cField )

   LOCAL nPos, nStart, nEnd, cValue

   nPos = At( '"' + cField + '":', cResponse )

   IF nPos > 0

      nStart = nPos + Len( cField ) + 3
      nEnd = At( ',', cResponse, nStart ) - 1

      IF nEnd < 0
         nEnd = At( '}', cResponse, nStart ) - 1
      ENDIF

      cValue = SubStr( cResponse, nStart, nEnd - nStart + 1 )
      cValue = StrTran( cValue, '"', '' )  // Eliminar comillas dobles

   ELSE

      cValue = ""

   ENDIF

RETURN( cValue )

// FIN / END
 


Regards, saludos.
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
karinha
 
Posts: 7872
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: Fecha y Hora desde la Nube

Postby JoseAlvarez » Fri Dec 13, 2024 4:55 pm

VitalJavier wrote:Le dije a copilot que tenia varios errores
y termino en esto y funciono:

Code: Select all  Expand view  RUN

function Ret_Date_Web()
    LOCAL cGeoUrl := "http://ip-api.com/json/"
    LOCAL cGeoResponse := HttpGet(cGeoUrl)
    LOCAL cCity := ExtractField(cGeoResponse, "timezone")   
   LOCAL cUrl := "http://worldtimeapi.org/api/timezone/"+cCity
   LOCAL cResponse := HttpGet(cUrl)
   LOCAL cFecha, cHora, cDateTime
   
    // Buscar el campo "datetime" en el JSON devuelto
    cDateTime := ExtractField(cResponse, "datetime")

    // Obtener fecha y hora
    cFecha := SubStr(cDateTime, 1, 10)  // Fecha en formato YYYY-MM-DD
    cHora := SubStr(cDateTime, 12, 8)  // Hora en formato HH:MM:SS

    // Mostrar fecha y hora en un mensaje
    MsgInfo("Fecha: " + cFecha + CRLF + "Hora: " + cHora, "Fecha y Hora de la Ciudad de México")

    RETURN NIL

function HttpGet(cUrl)
    LOCAL oHttp := CreateObject("Msxml2.XMLHTTP")
    LOCAL cResponse
    oHttp:Open("GET", cUrl, .F.)
    oHttp:Send()
    IF oHttp:Status = 200
        cResponse := oHttp:ResponseText
    ELSE
        cResponse := ""
    ENDIF
    Release oHttp
RETURN cResponse

function ExtractField(cResponse, cField)
    LOCAL nPos, nStart, nEnd, cValue
    nPos = At('"' + cField + '":', cResponse)
    IF nPos > 0
        nStart = nPos + Len(cField) + 3
        nEnd = At(',', cResponse, nStart) - 1
        IF nEnd < 0
            nEnd = At('}', cResponse, nStart) - 1
        ENDIF
        cValue = SubStr(cResponse, nStart, nEnd - nStart + 1)
        cValue = StrTran(cValue, '"', '')  // Eliminar comillas dobles
    ELSE
        cValue = ""
    ENDIF
RETURN cValue

 


En este foro no se termina de aprender nunca, ¡muy bien colega!
"Los errores en programación, siempre están entre la silla y el teclado..."

Fwh 19.06 32 bits + Harbour 3.2 + Borland 7.4 + MariaDB + TDolphin

Carora, Estado Lara, Venezuela.
User avatar
JoseAlvarez
 
Posts: 805
Joined: Sun Nov 09, 2014 5:01 pm


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: Google [Bot] and 94 guests