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.utcoffset()

current_time = datetime.utcnow().replace(tzinfo=tz.gettz('Asia/Calcutta'))
td = datetime.utcoffset(current_time)
#datetime.timedelta(0, 19800)
td.total_seconds() / 3600
#5.5
于 2013-05-12T18:28:07.463 回答
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

最后,请注意使用dateutilreplace设置时区并不总是返回正确的时间。以下是使用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 回答