2011-09-18 7 views
7

日付をローカルタイムスタンプからUTCに変換し、ローカルタイムスタンプに戻す必要があります。Pythonでの問題/ pytzローカルタイムゾーンからUTCへの変換後に戻る

奇妙なことに、UTCからローカルに変換するとPythonは元のPSTではなくPDTであると判断し、変換後の日付が1時間に達しました。誰かが何が起こっているのか、私が間違っていることを私に説明することはできますか?

from datetime import datetime 
from pytz import timezone 
import pytz 

DATE_FORMAT = '%Y-%m-%d %H:%M:%S %Z%z' 

def print_formatted(dt): 
    formatted_date = dt.strftime(DATE_FORMAT) 
    print "%s :: %s" % (dt.tzinfo, formatted_date) 


#convert the strings to date/time 
date = datetime.now() 
print_formatted(date) 

#get the user's timezone from the pofile table 
users_timezone = timezone("US/Pacific") 

#set the parsed date's timezone 
date = date.replace(tzinfo=users_timezone) 
date = date.astimezone(users_timezone) 
print_formatted(date) 

#Create a UTC timezone 
utc_timezone = timezone('UTC') 
date = date.astimezone(utc_timezone) 
print_formatted(date) 

#Convert it back to the user's local timezone 
date = date.astimezone(users_timezone) 
print_formatted(date) 

そして、ここで出力されます:

None :: 2011-09-18 18:24:23 
US/Pacific :: 2011-09-18 18:24:23 PST-0800 
UTC :: 2011-09-19 02:24:23 UTC+0000 
US/Pacific :: 2011-09-18 19:24:23 PDT-0700 

答えて

6

変更

date = date.replace(tzinfo=users_timezone) 

date = users_timezone.localize(date) 

localizereplaceがnを行い、夏時間に合わせて調整ot。詳細はthe docsを参照してください。

+0

固定していただきありがとうございます。 – user578888

関連する問題