OS timezone/dst をソースとして使用する、より単純な pytz の代替手段はありますか?
ctypes ラッパーまたはコンパイルを必要としないものは大歓迎です。
編集:獣
C 標準ライブラリ関数は、ローカル時間のコンパイル済みタイム ゾーン定義を で検索することを想定しています/etc/localtime
。次のように pytz を使用してタイムゾーン オブジェクトを作成できます。
>>> import datetime
>>> import pytz
>>> localtime = pytz.build_tzinfo('localtime', open('/etc/localtime', 'rb'))
>>> print datetime.datetime.now(localtime)
2012-12-11 10:02:40.566735+08:00
ここでの制限の 1 つは、コンテンツからどのタイム ゾーンが参照されているかを判断する方法がないこと/etc/localtime
です。そのため、日時オブジェクトをピクルしたり、マシン間でタイム ゾーンへの参照を渡したりする場合、これは問題になる可能性があります。
タイム ゾーンの更新を許可するために、一部の Linux ディストリビューションでは、実際のタイム ゾーン名も に書き出すため、コンパイルされた正しいタイム ゾーン定義に/etc/timezone
置き換えることができます。/etc/localtime
ターゲット OS がこれを行う場合、次のようにファイルを利用できます。
>>> with open('/etc/timezone', 'r') as fp:
... tzname = fp.read().strip()
...
>>> localtime = pytz.timezone(tzname)
>>> print datetime.datetime.now(localtime)
2012-12-11 10:06:36.234822+08:00
ターゲット システムにこのファイルがある場合は、おそらくこれが最適な方法です。