1

これが私のコードです

>>>from datetime import datetime
>>>from dateutil import tz
>>>current_time = datetime.utcnow().replace(tzinfo=tz.gettz('Asia/Calcutta'))
>>>2013-05-12 17:11:36.362000+05:30

オフセットを認識したくない現在の時刻に時差を追加したいので、時刻は次のようになります

>>>2013-05-12 22:41:36.362000

からの時差を簡単に取得できるようにします。

>>> datetime.utcnow() - current_time 

ありがとう、

4

2 に答える 2

0

datetime.timedelta次を使用してオフセットを取得できます。

offset = current_time.utcoffset()

次に、 current_time にオフセットを加算または減算して、目的の日時を取得できます。

import datetime as DT
import dateutil.tz as tz
import dateutil

current_time = DT.datetime.utcnow().replace(tzinfo=tz.gettz('Asia/Calcutta'))
print(current_time)
# 2013-05-12 18:33:19.368122+05:30

offset = current_time.utcoffset()
naive_time = current_time.replace(tzinfo=None)
print(naive_time)
# 2013-05-12 18:33:19.368122
print(naive_time + offset)
# 2013-05-13 00:03:19.368122

UTC 時間が必要な場合は、オフセットを差し引く必要があることに注意してください。

print(naive_time - offset)
# 2013-05-12 13:03:19.368122

ただし、UTC 日時を取得するより簡単な方法は、次のastimezoneメソッドを使用することです。

utc = dateutil.tz.tzutc()
print(current_time.astimezone(utc))
# 2013-05-12 13:03:19.368122+00:00

dateutil最後に、 と を使用しreplaceてタイムゾーンを設定しても、常に正しい time が返されるとは限らないことに注意してください。pytzでそれを行う方法は次のとおりです。

import pytz
calcutta = pytz.timezone('Asia/Calcutta')
utc = pytz.utc
current_time = calcutta.localize(DT.datetime.utcnow())
print(current_time)
# 2013-05-12 18:33:19.368705+05:30
print(current_time.astimezone(utc))
# 2013-05-12 13:03:19.368705+00:00
于 2013-05-12T18:43:12.160 に答える