2

OS timezone/dst をソースとして使用する、より単純な pytz の代替手段はありますか?

ctypes ラッパーまたはコンパイルを必要としないものは大歓迎です。

編集:

4

2 に答える 2

1

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

ターゲット システムにこのファイルがある場合は、おそらくこれが最適な方法です。

于 2012-12-11T02:08:01.023 に答える