71

場所の緯度/経度を取得し、夏時間がオンまたはオフのときに GMT オフセットを返す Java クラスがあります。現在の日付が夏時間であるかどうかを Java で判断する簡単な方法を探しているので、正しいオフセットを適用できます。現在、私はこの計算を米国のタイムゾーンに対してのみ実行していますが、最終的にはこれをグローバルなタイムゾーンにも拡張したいと考えています.

4

5 に答える 5

83

これは、質問がされているマシンの答えです:

TimeZone.getDefault().inDaylightTime( new Date() );

クライアントのためにこれを理解しようとするサーバーは、クライアントのタイムゾーンを必要とします。理由については、@Powerlordの回答を参照してください。

特定の TimeZone について

TimeZone.getTimeZone( "US/Alaska").inDaylightTime( new Date() );
于 2009-06-29T20:57:06.977 に答える
53
于 2015-09-11T16:47:34.667 に答える
10
TimeZone tz = TimeZone.getTimeZone("EST");
boolean inDs = tz.inDaylightTime(new Date());
于 2009-06-29T20:58:36.553 に答える
3

これらの座標を使用してもう少し作業を行い、それらがどのタイム ゾーンにあるかを把握する必要があります。どの TimeZone かがわかったら、isDayLight() メソッドが役立ちます。

たとえば、-0500 が EST (米国/カナダ東部標準時)、CDT (米国/カナダ中央夏時間)、COT (コロンビア時間)、AST (ブラジル エーカー標準時)、ECT (エクアドル) のいずれであるかを判断する方法はありません。時間)など

これらの一部は、夏時間をサポートしている場合とサポートしていない場合があります。

于 2009-06-29T21:03:30.803 に答える
1

Joda Timeには、オフセットを計算する処理メソッドが含まれています。DateTimeZone.convertLocalToUTC(...)を参照してください。

これを補足するために、緯度/経度情報を使用して現在のタイム ゾーンを調べる必要があります。 GeoNamesは、Web サービス用の Java クライアントと、単純な Web リクエスト フレームワーク (つまり、http://ws.geonames.org/timezone?lat=47.01&lng=10.2 )を提供します。

于 2009-06-29T21:06:48.660 に答える