Encajar las fechas con cambio de hora
Hola a todos!
Como ya sabéis ando metido en la modelización de plantas y del recurso solar.
El modelo de la radiación teórica ya está bastante avanzado, y he comenzado a hacer las comprobaciones con datos de medidas en planta, consiguiendo errores diarios de menos del 5% entre la radiación medida y la que calcula el modelo.
Pero a la hora de comparar años enteros, me ha surgido un problema con los cambios de hora en Marzo y Octubre. A parte de no entender por qué los sistemas solares no registran los datos en horario solar, es decir: las 12 del mediodía corresponde con el momento de más producción... me gustaría pediros ayuda para resolver este problema.
El modelo calcula la radiación teórica según la posición del sol y por lo tanto en horario solar. Es fácil adelantarlo o retrasarlo de 1h de forma global, para adaptarlo al GTM+1 del horario español, pero los cambios de hora de verano/invierno me desencajan las curvas durante la mitad del año.
Re: Encajar las fechas con cambio de hora
Cita:
Iniciado por
Adriancm
... a la hora de comparar años enteros, me ha surgido un problema con los cambios de hora en Marzo y Octubre
No estoy metido en el temo, pero no entiendo el problema
Se conocen las fechas y la hora cuando cambia el horario de invierno a verano y veceversa. Dónde está el problema?
Re: Encajar las fechas con cambio de hora
El objetivo del programa es que pueda funcionar con instalaciones de fuera de España también, y dejarlo funcionando en continuo. El problema está en que sepa localizar automáticamente cuando llega ese cambio de hora, sin tener que meterle a mano las fechas en las que se va a producir.
Re: Encajar las fechas con cambio de hora
Cita:
Iniciado por
Adriancm
El problema está en que sepa localizar automáticamente cuando llega ese cambio de hora ...
Si el programa tiene acceso a Internet, problema resuelto
Re: Encajar las fechas con cambio de hora
En principio no lo va a tener, pero podría ser una solución
Re: Encajar las fechas con cambio de hora
Cita:
Iniciado por
Adriancm
En principio no lo va a tener, pero podría ser una solución
Y si empleas el reloj interno del ordenador, creando tu propio calendario?
Los relojes internos suelen ser exactos, bastaría que se sincronice pocas veces con el horario oficial
Re: Encajar las fechas con cambio de hora
Efectivamente los programas deberían de tener en cuenta estos temas.
Yo desde hace tiempo realizo los reportes de tiempo en formato ISO-8601 que permite especificar tiempos y periodos de tiempo sin ambigüedad.
Si estas programando hay que acostumbrarse a dimensionar las estructuras de datos correctamente: los días tienen hasta 25horas, los minutos hasta 61 segundos (leap seconds) y los años 366 dias.
La especificación de tiempo debe siempre incluir el offset horario o indicar si es "Z" (Zero-Zulu, GMT+0). Tienes que tener en cuenta que hay países que tienen zonas horarias con fracciones de hora.
En Linux-Unix hay formas de definir claramente el nombre de las zonas horarias y cuando se producen los cambios de DST sin necesidad de estar conectado a Internet. Mira el API de funciones de tiempo del sistema operativo.
Saludos.
Re: Encajar las fechas con cambio de hora
Algo así he hecho si, he creado mi propia serie de tiempo en formato UTC (sin cambios de horario). He encajado los datos con esa serie, para el periodo de Octubre a Marzo (solo 1h de diferencia con el horario solar).
Y luego para corregir la hora suplementaria del periodo de Marzo a Octubre he añadido un 'cero' cuando la diferencia entre registros sucesivos es mayor que el intervalo definido (en mi caso 1h).
El programa se liaba bastante a la hora de cuadrar los datos, pero por suerte todos los errores los da en datos nocturnos, y aunque no consigo encontrar el origen del error, como son nocturnos se pueden reemplazar por 'ceros'.
A ver si pasa las pruebas...
PD: si a alguien le interesa el programa ya sabéis que no tengo problema en compartirlo
- - - - - - - - - - - - - - - - - - -
Cita:
Iniciado por
junavar
Efectivamente los programas deberían de tener en cuenta estos temas.
[...] Mira el API de funciones de tiempo del sistema operativo.
Saludos.
Le echaré un vistazo, gracias.