PDA

Ver la Versión Completa : Como puedo evitar el horario de verano


Parsec
16-09-2011, 15:55:40
Hola de nuevo,

el título puede parecer algo surrealista, pero se trata de los siguiente:

1º Me guardo la fecha y hora actual.
Present:=Now;
DecodeDate(Present, ano, mes, dia);
DecodeTime(Present, hora, Min, Seg, Mils);
2º Cambio la fecha y hora del sistema
3º Vuelvo a poner la fecha y hora del sistema según los variables del 1er. punto.
fecha.wyear:=ano;
fecha.wMonth:=mes;
fecha.wDay:=dia;
fecha.wHour:=hora;
Fecha.wMinute:=min;
Fecha.wSecond:=seg;
Fecha.wMilliseconds:=mils;
SetSystemTime(Fecha);
Y resulta que siempre me pone 2 horas más, creo que es debido al horario de verano. ¿como se puede solucionar?
Saludos

ecfisa
16-09-2011, 15:58:51
Hola Parsec.

El horario de verano depende de la configuración de la zona horaria de windows, por lo que si querés que no lo cambie, busca una zona horaria que no use el horario de verano.

Saludos.

Edito: Creo que en alguna versión de Windows permite seleccionar o nó el uso del horario de verano.

Parsec
16-09-2011, 16:08:40
Pero la configuración del horario de verano la quiero conservar porque me cambia de hora automáticamente.
¿No hay ninguna variable donde yo pueda leer cuantas horas hay de diferencia?
Es que no puedo poner un valor fijo a descontar de 2 h. (es lo que me suma ahora), porque a partir del mes de octubre (cuando cambie el horario) será de 1 h.
Saludos

NOTA: ¿Porqué aparece mi mensaje como movido?

ecfisa
16-09-2011, 16:14:49
Hola Parsec.

¿No hay ninguna variable donde yo pueda leer cuantas horas hay de diferencia?
Al menos yo, no conozco. (lo que no quiere decir que no exista...)

NOTA: ¿Porqué aparece mi mensaje como movido?

Por que el tema que trata tu mensaje no es sobre Object Oriented Programming.

Saludos. :)

Parsec
16-09-2011, 16:16:57
Ok, ya he visto que estoy 'varios'.

Y entonces.....
¿No hay ninguna variable donde yo pueda leer cuantas horas hay de diferencia?
Es que no puedo poner un valor fijo a descontar de 2 h. (es lo que me suma ahora), porque a partir del mes de octubre (cuando cambie el horario) será de 1 h.

Saludos

ecfisa
16-09-2011, 16:19:44
Hola Parsec.

Como te dije antes, yo no conozco, pero puede ser que exista o haya manera de obtener la diferencia. Voy a investigar si encuentro algo te comunico.

De todos modos si hay alguna posibilidad, alguno de los compañeros la sabrá sin lugar a dudas. ;)

Un saludo.

Parsec
16-09-2011, 16:41:13
No hace falta ecFisa, está resuelto, no me gusta hacerlo así pero funciona:
Present:= Now;
DecodeTime(Present, hora2, Min, Seg, Mils);
If hora2<>hora then // hora es el valor real y hora2 con las horas sumadas por el horario de verano.
begin
diferencia:=hora2-hora;
hora:=hora-diferencia;
fecha.wHour:=hora;
end;
SetSystemTime(Fecha);

Muchas gracias por todo y hasta la próxima.

Saludos

ecfisa
16-09-2011, 16:41:35
Hola de nuevo.

Revisá este artículo: Cómo configurar el horario de verano para los sistemas operativos Microsoft Windows (http://support.microsoft.com/kb/914387/es#appliesto), que aclara el funcionamiento del cambio de horario para los diferentes países.

Un saludo.

ecfisa
16-09-2011, 16:44:14
Hola.

Creo que pusimos el mensaje casi al mismo tiempo... :)

Me alegro mucho que lo hayas resuelto y gracias por acercarnos tu solución. ;)

Un saludo.