Page 1 of 1
Fecha y Hora desde la Nube
Posted: Wed Dec 11, 2024 3:56 am
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
Re: Fecha y Hora desde la Nube
Posted: Wed Dec 11, 2024 4:22 am
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
Re: Fecha y Hora desde la Nube
Posted: Thu Dec 12, 2024 12:19 pm
by karinha
GREAT my dear friend!
Regards, saludos.
Re: Fecha y Hora desde la Nube
Posted: Thu Dec 12, 2024 5:54 pm
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
Re: Fecha y Hora desde la Nube
Posted: Fri Dec 13, 2024 1:18 pm
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.
Re: Fecha y Hora desde la Nube
Posted: Fri Dec 13, 2024 4:55 pm
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!