2008-09-16 37 views
1

Ursprünglich suche ich nach einer Lösung in Actionscript. Der Sinn dieser Frage ist der Algorithmus, der die genaue Minute erkennt, wenn eine Uhr die Sommerzeit umschalten muss.Algorithmus zur Bestimmung der Sommerzeit eines Datums?

So zum Beispiel zwischen dem 25. und dem 31. Oktober müssen wir prüfen, ob das aktuelle Datum ein Sonntag ist, ist es vor oder nach 02.00 ...

Antwort

3

Es gibt keine wirkliche Algorithmus für Umgang mit Sommerzeit. Grundsätzlich kann jedes Land selbst entscheiden, wann und wann die Sommerzeit beginnt und endet. Das einzige, was wir als Entwickler tun können, ist eine Art Tabelle zu verwenden, um nachzuschlagen. Die meisten Computersprachen integrieren eine solche Tabelle in die Sprache. In Java können Sie die inDaylightTime Methode der TimeZone Klasse verwenden. Wenn Sie das genaue Datum und die Uhrzeit wissen möchten, wann die Sommerzeit in einem bestimmten Jahr beginnt oder endet, würde ich empfehlen, Joda Time zu verwenden. Ich kann keine saubere Methode erkennen, dies nur mit den Standardbibliotheken zu tun.

Das folgende Programm ist ein Beispiel: (Beachten Sie, dass es zu unerwarteten Ergebnissen führen könnte, wenn eine bestimmte Zeitzone für ein bestimmtes Jahr nicht DST haben)

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

so gibt es keine integrierte Methode in joda, die eine nimmt "DateTime" und eine "DateTimeZone" und sagt mir, ob die Datetime Tageslicht ist oder nicht? – russau

+0

@russau (A) Ja, russau, es gibt so eine eingebaute Methode in Joda-Time 2.3. Siehe [meine Antwort] (http://stackoverflow.com/a/19870158/642706) zu einer anderen Frage. (B) Sie stellen hier eine andere Frage als dieses Originalplakat. –

Verwandte Themen