2009-07-10 19 views

答えて

10

Python Timeモジュールをチェックしてください。

動作するはず
from time import gmtime, strftime 
print strftime("%z", gmtime()) 

太平洋標準時

+0

私たちは別のドキュメントを見ていますか、それは '%Z''ですか? – SilentGhost

+0

@ SilentGhost: "%z"と "%z"はPythonで全く同じです。 – ahawker

+11

はい、ただし**大文字の** Zと**小文字の** zはありません。 – SilentGhost

60

import time 
time.tzname 

それは二つの文字列のタプルを返します:最初は地元の非DSTのタイムゾーンの名前で、第二がありますローカルDSTタイムゾーンの名前。

+19

これをさらに使うには、 'time.tzname [time.daylight]'を使って現在のタイムゾーン。夏時間を考慮します。 –

+9

また、 'time.daylight'は、DSTがアクティブであることを示していません。 DSTがタイムゾーンによって観察されるかどうかを示します。あなたは 'time.localtime()。tm_isdst'を探しています。 – marr75

+0

timezoneの値は、 'HKEY_LOCAL_MACHINE¥SOFTWARE¥Microsoft¥Windows NT¥CurrentVersion¥Time Zones¥ 'に定義されています。 – swdev

4

あなたは、文字列の上にUTCオフセットを希望する場合:

time.timezone/-(60*60) 
+4

これは、(/ if)DSTが有効なときに正しく計算されません。 – marr75

20

はThomasHの答えのようにUTCオフセットを与えますが、アカウントに夏時間になります。

>>> import time 
>>> offset = time.timezone if (time.localtime().tm_isdst == 0) else time.altzone 
>>> offset/60/60 * -1 
-9 

time.timezoneまたはtime.altzoneの値は秒(UTCの分野東が負の値を取得して)UTCの西にあります。これは私たちが実際にそれを好む方法とは逆のものなので、* -1です。

time.localtime().tm_isdstは、夏時間の適用が現在有効でない場合は0になります(地域によって夏時間法が最近変更された場合は正しくない可能性があります)。

編集:marr75は正しいです、私はそれに応じて答えを編集しました。

+1

安全であるためには、オフセットチェックを元に戻す必要があります(altzoneの場合はdst = 1、それ以外の場合はタイムゾーン)。 DSTの状態が何らかの形で不明な場合、 'tm_isdst'は' -1'になります。この場合、現在のコードはデフォルトで 'altzone'になります。 DSTを使用しない地域では、この値は決して正確ではないので、 'timezone'がおそらくフォールバックになるはずです。 (もし '-1'が実際に' localtime'からの出力が可能であるかどうかは分かりません) – nmclean

+1

[全てのaltzone、タイムゾーンベースの解決策はいくつかの場合で失敗するかもしれません](http://bugs.python.org/issue1647654) – jfs

11

オフセットを計算するコードスニペットが正しくありません。http://bugs.python.org/issue7229を参照してください。

これを処理するための正しい方法は次のとおりです。

def local_time_offset(t=None): 
    """Return offset of local zone from GMT, either at present or at time t.""" 
    # python2.3 localtime() can't take None 
    if t is None: 
     t = time.time() 

    if time.localtime(t).tm_isdst and time.daylight: 
     return -time.altzone 
    else: 
     return -time.timezone 

これは、すべての可能性ではなく、OPが尋ねたことを正確に問題のですが、ページと時間のバグ上の2つの不正確なスニペットが追跡するが吸うされています修正する。

+0

1. 'tm_isdst'を知っているなら。 'daylight' 2をチェックする必要はありません。[全ての' altzone'、 'timezone'ベースの解決策は、いくつかの場合で失敗するかもしれません。](http://bugs.python.org/issue1647654) – jfs

関連する問題