2008-09-16 19 views
1

A l'origine je recherche une solution dans Actionscript. Le point de cette question est l'algorithme, qui détecte les minutes exactes, lorsqu'une horloge doit changer l'heure d'été.Algorithme pour déterminer l'heure d'été d'une date?

Ainsi, par exemple entre le 25 et le 31 de Octobre, nous devons vérifier, si la date réelle est un dimanche, il est avant ou après 2 heures ...

Répondre

3

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())); 
    } 
} 
+0

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

+0

@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. –