/ / Получаване на нов обект datetime според разликата в часовата зона - python, datetime, python-2.7

Получаване на нов обект с дата на закъснение според разликата във времевата зона - python, datetime, python-2.7

Ето моя код

>>>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