Fecha y Hora desde la Nube

Post Reply
User avatar
JoseAlvarez
Posts: 807
Joined: Sun Nov 09, 2014 5:01 pm

Fecha y Hora desde la Nube

Post by JoseAlvarez »

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

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: 807
Joined: Sun Nov 09, 2014 5:01 pm

Re: Fecha y Hora desde la Nube

Post by JoseAlvarez »

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

https://forums.fivetechsupport.com/view ... =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
karinha
Posts: 7884
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil
Contact:

Re: Fecha y Hora desde la Nube

Post by karinha »

GREAT my dear friend!

Regards, saludos.
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
VitalJavier
Posts: 242
Joined: Mon Jun 10, 2013 6:40 pm

Re: Fecha y Hora desde la Nube

Post by VitalJavier »

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

Code: Select all | Expand

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
karinha
Posts: 7884
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil
Contact:

Re: Fecha y Hora desde la Nube

Post by karinha »

Excelente Vital,

Code: Select all | Expand

#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
JoseAlvarez
Posts: 807
Joined: Sun Nov 09, 2014 5:01 pm

Re: Fecha y Hora desde la Nube

Post by JoseAlvarez »

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

Code: Select all | Expand

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.
Post Reply