Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Proyecto SIF/Veri*Factu/Ley Antifraude > Envío de registros y sus respuestas
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 08-11-2024
Avatar de bmfranky
bmfranky bmfranky is offline
Miembro
 
Registrado: may 2024
Ubicación: Gandia, Valencia
Posts: 863
Poder: 3
bmfranky Va por buen camino
Funcion Obterner Fechora de internet ROA

Hola,despues de leer lo anterior, he adaptado la funcion que tenia para obtener la hora de internet os la paso aqui por si a alguien le interesa, devuelve la hora del Real Instituto y Observatorio de la Armada (ROA)
Hay que instalar el paquete Nugget de criptografia BouncyCastle,


Aqui adaptado para devolver datetime , tened encuenta que devuelve utc

Código:
        /// <summary>
        /// Devuelve la hora actual de internet.
        /// </summary>
        /// <returns>Hora actual formateada.</returns>
        public static DateTime leeFechaHoraInternet()
        {
           
            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);//esta  la uso yo porque tengo bouncy instalado
                    //desde el paquete nuget BouncyCastle
                    return fechora;                               
                }
            }
            catch(Exception Exc)
            {
               return DateTime.Now;
            }
             return DateTime.Now;
        }
__________________
Uno se alegra de ser útil. (Isaac Asimov)
Responder Con Cita
  #2  
Antiguo 09-11-2024
ermendalenda ermendalenda is offline
Miembro
 
Registrado: ago 2021
Posts: 2.764
Poder: 7
ermendalenda Va por buen camino
Gracias, también he estado mirandolo, no habia viso que ya lo habias encontrado.
Mismo sitio devuelve la hora UNIX (los milisegundos desde las 00:00:00 de 1/1/1970)

Yo lo que hago es restarle la hora unix actual y me devuelve la diferencia, aplicandole la diferencia horaria me devuelve el desfase
Cita:
curl.exe --connect-timeout 2 -m 2 -k -S -L "https://www2.roa.es/cgi-bin/horautc"
Responder Con Cita
  #3  
Antiguo 09-11-2024
ermendalenda ermendalenda is offline
Miembro
 
Registrado: ago 2021
Posts: 2.764
Poder: 7
ermendalenda Va por buen camino
Post

Una pregunta, tenéis que tener en cuenta alguno que el último cambio horario es el 25/10/2026 o soy el único?
Responder Con Cita
  #4  
Antiguo 09-11-2024
ermendalenda ermendalenda is offline
Miembro
 
Registrado: ago 2021
Posts: 2.764
Poder: 7
ermendalenda Va por buen camino
Bufff, no sé, lo mismo parece egoísta, pero como se corra la voz de que este servicio es mejor lo vanos a petar, no se si va a aguantar millones de peticiones por minuto.
Responder Con Cita
  #5  
Antiguo 12-11-2024
ermendalenda ermendalenda is offline
Miembro
 
Registrado: ago 2021
Posts: 2.764
Poder: 7
ermendalenda Va por buen camino
Sigo afinando los temas de horas en orden cronológico.
Anteriormente dije de comprobar que el registro anterior fuera siempre de uuna fecha/hora inferior a la hora actual del sistema, pero me he encontrado con excepciones.

Resulta que si estamos sincronizando con un servidor de hora (NTP) hay un pequeño desfase, desde que envia la consulta hasta que se rescata la respuesta, normalmentedesde 100milisegundos en adelante, depende de la carga del servidor NTP y las conexiones. Si a ello añadimos que tenemos un SIF en el que traajan varios dispositivos(conexiones a la vez, puede darse la casualidad de que le den a grabar 2 a la vez, el contador de factura coja el numero siguiente justo al primero que le ha dado en esea milesima de segundo, y mientras se desbloquea la consulta del siguiente contador puede pasar que haya una sincronizacion de hora que por el desfase (no siempre igual de hora) coja un segundo antes.
Es improbable, no sé, depende del número de transacciones que se hagan.
Pues nada, aunque probablemente permitan ese desfase no me fio, y he decidido comprobar que si el desfase (cuando la hora del sistema es menor a la del ultimo registro) es menor de 5 segundos meter una demora y no devolver el error.
El otro motivo es que tengo equipos que hacen de servidor y el satelite también está sincronizando la fecha/hora con lo cual se puede producir un desfase de algun segundo más.

Última edición por ermendalenda fecha: 12-11-2024 a las 09:27:04.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Como le resto una hora a la fecha y hora en sql server uper MS SQL Server 3 12-10-2015 20:41:49
Agrupar por fecha, teniendo en el campo fecha y hora El_Raso Firebird e Interbase 3 18-03-2010 22:05:19
obtener solo la fecha en formato fecha y sin hora BlueSteel SQL 14 09-05-2008 16:42:19
formato fecha y hora a solo Fecha ozegarra Firebird e Interbase 6 22-02-2008 18:43:34
Extraccion fecha de un campo fecha y hora matti Firebird e Interbase 3 26-04-2007 19:48:11


La franja horaria es GMT +2. Ahora son las 12:59:45.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi