offsetdatetime example java dst datetimeoffset

example - Determine si el horario de verano(DST) está activo en Java para una fecha especificada



offsetdatetime example (5)

tl; dr

ZoneId.of( "America/Montreal" ) .getRules() .isDaylightSavings( Instant.now() )

java.time

Aquí está la java.time moderna de java.time (ver Tutorial ) de la Respuesta correcta de mamboking .

Código de ejemplo:

ZonedDateTime now = ZonedDateTime.now( ZoneId.of( "America/Montreal" ) ); … ZoneId z = now.getZone(); ZoneRules zoneRules = z.getRules(); Boolean isDst = zoneRules.isDaylightSavings( now.toInstant() );

Observe cómo en la última línea tuvimos que extraer un objeto Instant de nuestro objeto ZonedDateTime con una simple llamada a toInstant .

Tengo una clase de Java que toma la latitud / longitud de una ubicación y devuelve el desplazamiento GMT cuando el horario de verano está activado y desactivado. Estoy buscando una manera fácil de determinar en Java si la fecha actual es en horario de verano para poder aplicar el desplazamiento correcto. Actualmente solo estoy realizando este cálculo para las zonas horarias de EE. UU. Aunque eventualmente también me gustaría expandirlo a las zonas horarias globales


Esta es la respuesta para la máquina en la que se pregunta:

TimeZone.getDefault().inDaylightTime( new Date() );

Un servidor que trate de resolver esto para un cliente necesitará la zona horaria del cliente. Ver @Powerlord respuesta por la razón.

Para cualquier zona horaria particular

TimeZone.getTimeZone( "US/Alaska").inDaylightTime( new Date() );


Vas a tener que hacer un poco más de trabajo usando esas coordenadas y descubrir en qué zona horaria están. Una vez que sepas qué Zona horaria, el método isDayLight () sería útil.

Por ejemplo, no tiene forma de saber si -0500 es EST (hora estándar del este de EE. UU. / Canadá), CDT (hora central de EE. UU. Y Canadá), COT (hora de Colombia), AST (hora estándar de Brasil), ECT (Ecuador) Tiempo), etc ...

Algunos de estos pueden o no ser compatibles con el horario de verano.



TimeZone tz = TimeZone.getTimeZone("EST"); boolean inDs = tz.inDaylightTime(new Date());