2011-07-04 21 views
0

私はDST時間の取得に問題がありますか?

Calendar c1 = Calendar.getInstance(TimeZone.getTimeZone(gmt)); 

を使用することにより、他のGMT値の時間を取得しようとしていますが、どのように私は、そのタイムゾーンでDSTの時間を得ることができます。

答えて

0

夏時間を取得するjava.util.TimeZoneで利用可能ないくつかの方法があります。 BlackBerry Java Docsのページをご覧ください。

0

タイムゾーンクラスは、特定のタイムゾーンオブジェクトのgetDSTSavings()メソッドを提供します。 (JavaDoc: "ローカルウォールクロック時間を取得するためにローカル標準時間に追加する時間を返します。")

Calendarインターフェイスには、UTCからのオフセットを見つけるための2つのgetOffset()メソッドがあります。 (JavaDoc: "指定された日付のUTCからこのタイムゾーンのオフセットを返します。夏時間が指定された日付で有効な場合、オフセット値は夏時間の量で調整されます)"

Javaの時間の複雑な方法を完全に理解するには、コードのこの作品:

@Test 
public void testDST() { 
    final TimeZone met = TimeZone.getTimeZone("MET"); 
    Calendar gc = new GregorianCalendar(met); 
    final long timeInMillis = gc.getTimeInMillis(); 
    final long gmtTime= timeInMillis-(gc.getTimeZone().getOffset(timeInMillis)); 
    final Date gmtDate = new Date(gmtTime); 
    System.out.printf("%-40s: %tc\n%-40s: %tc\n%-40s: %tc\n%-40s: %d\n%-40s: %d", 
      "new Date() (local timezone)",new Date(), 
      "UTC", gmtDate , 
      "now from Calendar with TC GMT+02:00",gc, 
      "zoneoffset",gc.get(Calendar.ZONE_OFFSET), 
      "dst savings",met.getDSTSavings()); 

} 

あなたはまた、独自のSimpleTimeZoneを定義し、カスタムDST規則を提供することができますが、しかし、私は事前に定義されたタイムゾーンからこの情報を取得する方法を発見していません。

TimeZone.getTimeZone(TZName)が指定されたタイムゾーンを見つけられない場合、例外はスローされませんが、GMTを使用するだけで大​​きな誤解を招くことに注意してください。

あなたはカレンダーのjavadocにこのすべての情報(と多くの)を見つけることができ、タイムゾーン、日付、など

+0

「、そのdoesnのそれは問題では完全には明らかではなかったが、BlackBerryのは、Javaミーを使用していますJava SE APIをすべて利用できます。 http://www.blackberry.com/developers/docs/7.0.0api/java/util/TimeZone.html –

+0

を参照してください。これはブラックベリーで動作するはずです。しかし、あなたが投稿したドキュメントのリンクから、私はそれがgetOffsetとgetRawOffsetを持って参照してください。それらの違いは、現在の夏時間の量を与えるはずです。 – Ron

関連する問題