FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Detectar Horario Verano/Invierno
Buenas!
Estoy desarrollando una aplicación en delphi 5.0 y necesito detectar el cambio de horario de verano a invierno y viceversa. Con un timer miro la hora del sistema cada cierto tiempo. ¿estamos en horario de verano o de invierno? ¿alguien me puede dar una pista? |
#2
|
|||
|
|||
Pues eso es segun
Por que varia en ciertos Paises, supongamos aqui en Mexico, los del Norti, mas bien unos estados del Norti del pais se pasan por ahi el horario de verano, mi recomendacion seria que fuera a cambio de Fecha no de hora, cuando prendas la maquina y es es la fecha de horario de verano le aumentas una hora y al revez, como la vez...
__________________
saludos desde Puebla Mexico.. asanxt@hotmail.com "como siempre a sus ordenes y siempre con buena cara" 'lolita me excitas, perversa piel de melocotón' |
#3
|
||||
|
||||
Cita:
// Saludos |
#4
|
|||
|
|||
Hola,
muchas gracias por las respuestas, utilizando esa función, roman, el cambio de horario de verano a invierno lo hace el 5 de octubre y no el 31 de octubre (último fin de semana de octubre) que es el correcto. Del mismo modo, el cambio de invieno a verano lo hace el 5 de marzo y no el 28 de marzo (último fin de semana de marzo). No se por qué toma el día 5 como referencia. ¿es por algo de windows?¿configuración regional? Seguiré investigando a partir de ahí. Gracias |
#5
|
||||
|
||||
La función GetTimeZoneInformation simplemente toma los datos de la configuración regional del sistema de manera que yo empezará revisando ésta.
// Saludos |
#6
|
|||
|
|||
Ahora si
Hola!
Finalmente lo he conseguido así: Código:
(* Devuelve true si Date está dentro del horario de verano y false en caso contrario *) function EsHorarioVerano(Date: TDate): Boolean; var tzInfo: TTimeZoneInformation; Horario: DWORD; begin Horario:= GetTimeZoneInformation(tzInfo); if Horario = TIME_ZONE_ID_DAYLIGHT then Result:= True else Result:= False; end; :) El problema estaba en el formato que se utilizaba. No era el 5 de octubre sino el último domingo de octubre. Copiado de la ayuda de windows de 'GetTimeZoneInformation' (StandarDate) Cita:
Gracias |
|
|
|