Il n'y a pas d'algorithme réel pour traitant de l'heure d'été. Fondamentalement, chaque pays peut décider lui-même quand et si l'heure d'été commence et se termine. La seule chose que nous pouvons faire en tant que développeurs est d'utiliser une sorte de table pour le rechercher. La plupart des langages informatiques intègrent une telle table dans la langue.
En Java, vous pouvez utiliser la méthode inDaylightTime
de la classe TimeZone. Si vous voulez connaître la date et l'heure exactes du début ou de la fin de l'heure d'été au cours d'une certaine année, je vous recommande d'utiliser Joda Time. Je ne peux pas voir une façon propre de trouver cela en utilisant seulement les bibliothèques standard.
Le programme suivant est un exemple: (Notez que cela pourrait donner des résultats inattendus si un fuseau horaire n'a pas l'heure d'été pour une année)
import org.joda.time.DateTime;
import org.joda.time.DateTimeZone;
public class App {
public static void main(String[] args) {
DateTimeZone dtz = DateTimeZone.forID("Europe/Amsterdam");
System.out.println(startDST(dtz, 2008));
System.out.println(endDST(dtz, 2008));
}
public static DateTime startDST(DateTimeZone zone, int year) {
return new DateTime(zone.nextTransition(new DateTime(year, 1, 1, 0, 0, 0, 0, zone).getMillis()));
}
public static DateTime endDST(DateTimeZone zone, int year) {
return new DateTime(zone.previousTransition(new DateTime(year + 1, 1, 1, 0, 0, 0, 0, zone).getMillis()));
}
}
donc il n'y a pas de méthode intégrée dans Joda qui prend "DateTime" et un "DateTimeZone" et me dit si le datetime est Daylight ou non? – russau
@russau (A) Oui, russau, il y a une telle méthode intégrée dans Joda-Time 2.3. Voir [ma réponse] (http://stackoverflow.com/a/19870158/642706) sur une autre question. (B) Vous posez une autre question que cette affiche originale ici. –