Ето моя код
>>>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
Благодаря,
Отговори:
0 за отговор № 1Можете да получите отместването с като datetime.timedelta
използвайки:
offset = current_time.utcoffset()
Отместването може след това да бъде добавено или извадено от текущото време, за да се получи желаният дата на времето.
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
, за да зададете часовата зона не винаги връща точното време, Ето как можете да го направите 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
0 за отговор № 2
Можете да получите отместването с помощта на 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