il n'y a aucun moyen de le faire directement, mais vous pouvez utiliser TimeZone.isDaylightTime (date), comme dans:
TimeZone tz = TimeZone.getTimeZone ("America/Denver") ;
Date date = new GregorianCalendar (2010, 10, 15).getTime() ;
if (tz.isDaylightTime (date)) {
// dst in effect code
}
else {
// dst not in effect code
}
Bien sûr, pour obtenir la date de début (si cela est vraiment ce que vous avez besoin) , vous devez parcourir tous les jours dans une année donnée et vérifier chacun ... ce qui serait assez inefficace. Aussi, comme indiqué dans la réponse ci-dessus, autant que je sache, les informations sur l'heure d'été sont compilées dans la bibliothèque java.util et donc si une municipalité change ses lois sur le début/fin de dst, vous obtiendrez des résultats incorrects.
En outre, il semble que l'implémentation de java.util.TimeZone dans Android est cassée (au moins dans 2.2). Par exemple
TimeZone denver = TimeZone.getTimeZone ("America/Denver") ;
TimeZone phoenix = TimeZone.getTimeZone ("America/Phoenix") ;
== vrai; // qu'il ne devrait pas
Exécuté sous l'émulation dans Eclipse, denver.hasSameRules (phoenix) renvoie true, et il doit retourner false: les deux sont GMT-7: 00 mais Phoenix n'utilise pas dst. Je n'ai pas accès à des appareils Android pour tester si c'est juste un problème avec l'émulateur ou non. J'ai commencé à chercher dans cette archive une réponse à ce problème de denver == phoenix et je suis tombé sur votre post alors j'ai pensé que je répondrais.
Pour quiconque trébuche sur ce post. Il y a une autre réponse sur stackoverflow sur comment utiliser Joda-Time pour obtenir la prochaine transition Timezone: http://stackoverflow.com/questions/1449500/get-daylight-saving-transition-dates-for-time-zones-in- Java – Mike