Tengo la siguiente duda sobre el uso del indicador tm_isdst en la estructura tm. Como por páginas man y googled resultados, entiendo que su valor se interpreta como sigueindicador mktime y tm_isdst
A. Un valor de 0 indica DST no es en efecto para el tiempo representado
B. Un valor de 1 indica DST es en efecto
C. Un valor de -1 hace que mktime verifique si DST está en efecto o no.
Este es el tercer punto que me confunde. Mi duda es cómo mktime puede determinar si el DST debe aplicarse o no con precisión.
Por ejemplo
My Time Zone = GMT + 3:00
DST shifting = +1 Hour at 5:00 AM in January (to keep it simple)
Current UTC time = "01/Jan/2012 00:00:00"
UTC time in seconds time_t timetUTC = X seconds
Hence my time is = "01/Jan/2012 03:00:00"
medida que pasa el tiempo, mis cambios de valor de tiempo de la siguiente manera
"01/Jan/2012 04:00:00" (X + 1 * 60 * 60)
"01/Jan/2012 05:00:00" (X + 2 * 60 * 60)
"01/Jan/2012 05:59:59" (X + 2 * 60 * 60 + 59)
"01/Jan/2012 05:00:00" (X + 3 * 60 * 60)
"01/Jan/2012 06:00:00" (X + 4 * 60 * 60)
Según mi entendimiento
tm tmMyTime = localtime_r(X + 2 * 60 * 60) will set tmMyTime.tm_isdst to 0
tm tmMyTime = localtime_r(X + 3 * 60 * 60) will set tmMyTime.tm_isdst to 1
De esta manera, a pesar de todos los demás componentes de tm structure son iguales en ambos casos, mktime (tmMyTime) puede devolver p valor de UTC de Roper, según el valor de tm_isdst.
Ahora, si configuro tmMyTime.tm_isdst = -1, ¿qué valor devolvería mktime? Leí acerca de la variable TZ, la base de datos de tiempo, etc. A pesar de todo, lógicamente, ¿cómo puede mktime() determinar si aplicar la corrección DST o no para esos valores tm que pueden aparecer dos veces?
No contamos con horario de verano en nuestra zona horaria. Por lo tanto, no estoy muy seguro de si mi comprensión es correcta. Por favor, corríjame si estoy equivocado. Su ayuda es muy apreciada.
Descubrió que la hora local es ambigua. Es. –