71 votes

Déterminer si l'heure d'été est active en Java pour une date spécifiée

J'ai une classe Java qui prend la latitude / longitude d'un lieu et renvoie le décalage GMT lorsque l'heure d'été est activée ou désactivée. Je cherche un moyen simple de déterminer en Java si la date actuelle est en heure avancée afin de pouvoir appliquer le décalage correct. Actuellement, je n’effectue ce calcul que pour les fuseaux horaires des États-Unis, bien que j’aimerais éventuellement l’étendre également aux fuseaux horaires mondiaux.

83voto

Clint Points 5864

Voici la réponse pour la machine sur laquelle la question est posée:

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

Un serveur essayant de comprendre cela pour un client aura besoin du fuseau horaire du client. Voir @R. Bemrose répond pour la raison.

Pour un fuseau horaire particulier

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

10voto

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

3voto

Powerlord Points 43989

Vous devrez travailler un peu plus avec ces coordonnées et déterminer le fuseau horaire dans lequel elles se trouvent. Une fois que vous savez quel fuseau horaire, la méthode isDayLight () serait utile.

Par exemple, vous n’avez aucun moyen de dire si -0500 est HNE (heure normale de l’Est des États-Unis / Canada), CDT (heure avancée du Centre des États-Unis / Canada), COT (heure de la Colombie), AST (heure normale du Brésil), ECT (Équateur). Temps), etc ...

Certains d'entre eux peuvent ou non prendre en charge l'heure d'été.

1voto

James Van Huis Points 3333

Joda Time contient les méthodes de manipulation qui va calculer les décalages pour vous. Voir DateTimeZone.convertLocalToUTC(...)

Pour compléter cela, vous aurez besoin de regarder le fuseau horaire actuel avec votre latitude/longitude info. GeoNames fournit un client java pour son service web, ainsi que d'un simple cadre de la demande (c'est à dire http://ws.geonames.org/timezone?lat=47.01&lng=10.2)

0voto

bluesagar Points 6

http://developer.android.com/reference/java/util/TimeZone.html ceci indique que Android effectue automatiquement tous les calculs, y compris la lumière du jour.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X