Estoy usando la función mktime (struct tm *) en Suse 10.Comportamiento confuso de mktime en Linux?
Ahora, estoy notando un comportamiento extraño cuando el horario de verano está habilitado. Digamos que he habilitado el horario de verano para comenzar el 15 de septiembre a las 18:10 y la corrección de la luz del día es de 30 minutos. Ahora, cuando llamo a mktime con la estructura tm que tiene la fecha como 15/09 18:10 y tm_isdst se establece en 0, obtengo los mismos valores en la estructura tm solo con tm_isdst establecido en 1.
Pero, si pasa la fecha como 15 de septiembre a las 18:10 con tm_isdst establecido en 1, entonces el tiempo cambia a 17:40. Esta corrección en la estructura tm se observa por el tiempo transcurrido entre el 15 de septiembre de 18:10 a 15 de septiembre de 18:40, pero después de eso no ocurre ninguna corrección en el tiempo y la bandera de dst permanece habilitada. Incluso si paso la fecha como 16 de septiembre a las 18:10, no se produce corrección de tiempo, solo la bandera de dst permanece activada.
Estoy totalmente confundido. ¿Es este el comportamiento correcto de mktime?
No lo sé.Tal vez no está definido pasar el tiempo 18:10 (dst 0) a mktime, pero creo que lo más útil para devolver en ese caso sería 18:40 (dst 1) –