26

GMT 時間で実行されるサーバーがあります。現在 (まさにこの瞬間) カリフォルニア州ロサンゼルスの夏時間 (DST) であるかどうかを判断する Python スクリプトを作成する必要があります。どうすればこれを達成できますか? pytz と time を調べましたが、わかりません。LA の現在時刻を GMT 時刻と比較するなどのロジックを作成できることはわかっていますが、代わりに標準ライブラリを使用できれば、はるかにクリーンになります。

ありがとう

編集:タイムゾーンを設定するサンプルコードを次に示します。

from pytz import timezone
import pytz
from datetime import datetime, timedelta

tz = timezone('America/Los_Angeles')
// Instantiate a datetime object using tz? 

編集:これは機能するコードのスニペットです。エレガントではないので、このために作成されたライブラリまたは何かがあるかどうかを尋ねています。多分 is_dst() 関数のようです。

utc = timezone("UTC")
now = utc.localize(datetime.utcnow())
los_angeles_tz = timezone('America/Los_Angeles')
los_angeles_time = now.astimezone(los_angeles_tz)

delta = los_angeles_time.utcoffset()
dstDelta = timedelta(hours=-8)

is_dst = (delta == dstDelta)
4

2 に答える 2

42
import pytz
from datetime import datetime, timedelta

def is_dst(zonename):
    tz = pytz.timezone(zonename)
    now = pytz.utc.localize(datetime.utcnow())
    return now.astimezone(tz).dst() != timedelta(0)

使用法:

>>> is_dst("America/Los_Angeles")
False

>>> is_dst("America/Sao_Paulo")
True
于 2013-11-04T22:54:23.930 に答える