2008-09-16 23 views
1

Asıl olarak Actionscript'te bir çözüm arıyorum. Bu sorunun amacı, bir saatin Gün Işığından Tasarruf Süresini değiştirmesi gerektiğinde, kesin Dakika'yı algılayan algoritmadır. Gerçek tarih bir pazar günü iseBir tarihin Gün Işığı Tasarruf Süresini belirlemek için Algoritma?

Yani 25. ve biz kontrol etmek zorunda Ekim ayının 31. arasındaki örneğin, onun için gerçek bir algoritma yoktur

cevap

3

... önce veya 2 saat sonra ise Yaz Saati Uygulaması. Temel olarak her ülke -ve-eğer-DST başlar ve bittiğinde kendileri karar verebilir. Geliştiriciler olarak yapabileceğimiz tek şey, bakmak için bir çeşit masa kullanıyor. Çoğu bilgisayar dili, böyle bir tabloyu dilde birleştirir.

Java'da TimeZone sınıfının inDaylightTime yöntemini kullanabilirsiniz. DST'nin belirli bir yılda başladığı veya sona erdiği tarih ve saati öğrenmek istiyorsanız, Joda Time'u kullanmanızı tavsiye ederim. Bunu sadece standart kütüphaneleri kullanarak bulmanın temiz bir yolunu göremiyorum. (Belirli bir zaman dilimi belli yıl boyunca DST yoksa beklenmedik sonuçlar verebilir unutmayın)

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

böylece sürer Joda hiçbir dahili yöntem vardır:

aşağıdaki program örneğidir "DateTime" ve bir "DateTimeZone" ve bana datetime Daylight olup olmadığını söyler? – russau

+0

@russau (A) Evet, russau, Joda-Time 2.3'te böyle bir yerleşik yöntem var. Başka bir soruda [yanıtım] (http://stackoverflow.com/a/19870158/642706) konusuna bakın. (B) Bu orijinal posterden farklı bir soru soruyorsunuz. –

İlgili konular