場所の緯度/経度を受け取り、夏時間のオン/オフ時にGMTオフセットを返すJavaクラスがあります。正しいオフセットを適用できるように、現在の日付が夏時間であるかどうかをJavaで簡単に判断する方法を探しています。現在、この計算は米国のタイムゾーンに対してのみ実行していますが、最終的にはこれをグローバルタイムゾーンにも拡張したいと考えています。
これは質問がされているマシンの答えです:
TimeZone.getDefault().inDaylightTime( new Date() );
クライアントでこれを把握しようとするサーバーには、クライアントのタイムゾーンが必要です。理由については、@ Powerlordの回答をご覧ください。
特定のTimeZoneについて
TimeZone.getTimeZone( "US/Alaska").inDaylightTime( new Date() );
TimeZone tz = TimeZone.getTimeZone("EST");
boolean inDs = tz.inDaylightTime(new Date());
これらの座標を使用してもう少し作業を行う必要があり、それらがどのタイムゾーンにあるかを把握する必要があります。つまり、どのTimeZoneかがわかれば、isDayLight()メソッドが役立ちます。
たとえば、-0500がEST(米国/カナダ東部標準時)、CDT(米国/カナダ中部夏時間)、COT(コロンビア時間)、AST(ブラジルエーカー標準時)、ECT(エクアドル時間)など...
これらの一部は、夏時間をサポートする場合としない場合があります。
Joda Time には、オフセットを計算する処理メソッドが含まれています。 DateTimeZone.convertLocalToUTC(...) を参照してください
これを補足するには、緯度/経度情報で現在のタイムゾーンを検索する必要があります。 GeoNames は、Webサービス用のJavaクライアント、および単純なWeb要求フレームワーク(つまり http://ws.geonames.org /timezone?lat=47.01&lng=10.2 )