Ver Mensaje Individual
  #4  
Antiguo 05-12-2024
Avatar de bmfranky
bmfranky bmfranky is offline
Miembro
 
Registrado: may 2024
Ubicación: Gandia, Valencia
Posts: 863
Reputación: 3
bmfranky Va por buen camino
Cita:
Empezado por razorxxx Ver Mensaje
Hola bmfranky, ¿podrías publicar un ejemplo en Delphi de cómo obtener la hora del servidor ROA de la AEAT? Esto ya me dijeron que es importante, ya que en ocasiones a los ordenadores se les desconfigura la fecha-hora o algún listillo la cambia a mano.
Hola, lo siento pero yo uso c#, so sabria realizar la conversion correctamente, le pongo mi codigo.
Código:
        /// <summary>
        /// Devuelve la hora actual formateada con uso horario.
        /// </summary>
        /// <returns>Hora actual formateada.</returns>
        public static string leeFechaHoraInternet()
        {
            string retorno = DateTime.Now.ToString("yyyy-MM-dd'T'HH:mm:ssK"); 
            System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
            try
            {
                HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create("https://www2.roa.es/cgi-bin/horautc");//https://worldtimeapi.org/api/ip");
                webRequest.Method = "GET";
                HttpWebResponse respuesta = (HttpWebResponse) webRequest.GetResponse();
                if(respuesta.StatusCode == HttpStatusCode.OK)
                {
                    Stream strmRespuesta = respuesta.GetResponseStream();
                    StreamReader leeRespuesta = new StreamReader(strmRespuesta);
                    string jsonRespuesta = leeRespuesta.ReadToEnd();
                    long ticks = long.Parse(jsonRespuesta.Replace("\\n", ""));
                    var fechora = Org.BouncyCastle.Utilities.Date.DateTimeUtilities.UnixMsToDateTime(ticks).ToLocalTime();//esta la uso yo porque tengo bouncy instalado
                    //desde el paquete nuget BouncyCastle
                    retorno = fechora.ToString("yyyy-MM-dd'T'HH:mm:ssK");                               
                }
            }
            catch(Exception Exc)
            {
                retorno = DateTime.Now.ToString("yyyy-MM-dd'T'HH:mm:ssK");
            }
             return retorno;
        }

Puede preguntar a @novatico
Cita:
Empezado por novatico Ver Mensaje
Es que yo no tomo la fecha hora del sistema, sino que la tomo de internet.

Incluso he encontrado la forma de tomar el "unixtime" del ROA (Real Observatorio de la Armada) que es el dato oficial que tomas todos los organismos estatales, incluida la AEAT.
Solo hay que tener en cuenta, además, el desfase por la zona horaria.

Aunque de momento no lo he implementado y lo tomo de "http://date.jsontest.com" al que tambien hay que añadir el desfase de zona.

Es que tengo clientes "muy amigos" de cambiar la fecha y hora del sistema.
El decia tener un control creado para ello.
__________________
Uno se alegra de ser útil. (Isaac Asimov)
Responder Con Cita