この回答は、以外のモジュールを使用したくない場合に役立ちますdatetime
。
datetime.utcfromtimestamp(timestamp)
ナイーブdatetime
オブジェクト(認識されていないオブジェクト)を返します。認識しているものはタイムゾーンを認識し、ナイーブは認識していません。タイムゾーン間(たとえば、UTCと現地時間の間)に変換する場合は、注意が必要です。
開始する日付をインスタンス化する人ではないが、それでもdatetime
UTC時間で単純なオブジェクトを作成できる場合は、次のPython 3.xコードを試して変換することをお勧めします。
import datetime
d=datetime.datetime.strptime("2011-01-21 02:37:21", "%Y-%m-%d %H:%M:%S") #Get your naive datetime object
d=d.replace(tzinfo=datetime.timezone.utc) #Convert it to an aware datetime object in UTC time.
d=d.astimezone() #Convert it to your local timezone (still aware)
print(d.strftime("%d %b %Y (%I:%M:%S:%f %p) %Z")) #Print it with a directive of choice
タイムゾーンが現在MDTである場合、夏時間はMSTを出力するため、上記のコードでは機能しないと誤って想定しないように注意してください。月を8月に変更すると、MDTが出力されることに注意してください。
アウェアdatetime
オブジェクト(Python 3.xでも同じ)を取得する別の簡単な方法は、最初にタイムゾーンを指定して作成することです。次に、UTCを使用した例を示します。
import datetime, sys
aware_utc_dt_obj=datetime.datetime.now(datetime.timezone.utc) #create an aware datetime object
dt_obj_local=aware_utc_dt_obj.astimezone() #convert it to local time
#The following section is just code for a directive I made that I liked.
if sys.platform=="win32":
directive="%#d %b %Y (%#I:%M:%S:%f %p) %Z"
else:
directive="%-d %b %Y (%-I:%M:%S:%f %p) %Z"
print(dt_obj_local.strftime(directive))
Python 2.xはPython 2.xには存在しないため、Python 2.x を使用する場合は、サブクラスdatetime.tzinfo
を作成し、それを使用してアウェアdatetime
オブジェクトを作成する必要がありますdatetime.timezone
。