2017-02-02 5 views
1

私はdatetime tzinfoオブジェクト(例えば、pytzで実装されているように)に変換したいAndroidの携帯電話からタイムゾーン情報を受け取るPythonアプリケーションをビルドしようとしています。UTCからのオフセット(ミリ秒)でdatetime tzinfoオブジェクトを作成する方法は?

この小さなJavaプログラムが利用できるTimeZoneためのフォーマットの「サンプル」を示しています。

import java.util.TimeZone; 

public class GetLocalTimeZone { 

    public static void main(String []args) { 
     TimeZone local_tz = TimeZone.getDefault(); 
     System.out.println(local_tz.getDisplayName()); 
     System.out.println(local_tz.getID()); 
     System.out.println(local_tz.getRawOffset()); 
    } 
} 

TimeZone documentationに従って

Central European Time 
Europe/Amsterdam 
3600000 

を出力し、getRawOffset()機能「の量を返しますこのタイムゾーンで標準時間を取得するためにUTCに追加する時間(ミリ秒単位)」を指定します。これは、datetime.tzinfoオブジェクトをインスタンス化するための良い出発点のようです。

getID()メソッドの出力を使用してインスタンス化することはできますが、問題は、

import pytz 
amsterdam = pytz.timezone('Europe/Amsterdam') 

私は時間に変換しても、オフセットの数値でtimezoneをインスタンス化するかどうかはわかりません。例えば、

pytz.timezone('+01:00') 

は、UnknownTimeZoneErrorとなります。 UTCからのオフセット(ミリ秒単位)からdatetime.tzinfoオブジェクトを作成するにはどうすればよいですか? (私はArrowPendulumのような他の実装にもオープンしています)。

答えて

1

問題は、タイムゾーンにオフセットと夏時間情報の両方が含まれていることです。

オフセットは同じですが、夏時間が異なるタイムゾーンが存在する可能性があるため、オフセットだけではタイムゾーンを識別できません。

可能であれば、表示名やIDを使用する必要があります。

あなたができない場合は、すべてのタイムゾーンを列挙し、そのうちの少なくとも一部のオフセットがあるものに基づいてショートリストを取得することをお勧めします。どういうわけか、あなたは1つ選ぶ必要があります。

関連する問題