Преобразование часового пояса из ut c в америку / нью-йорк по словарю с использованием python - PullRequest
0 голосов
/ 17 марта 2020

У меня есть словарь меток времени, которые являются строками, которые я сначала преобразовал в объекты даты и времени. Мне нужно сделать sql эквивалент timestamp at time zone 'UTC' at time zone 'America/New_York' Здесь у меня есть для l oop

 for x in dataj:
     x['event_time'] = datetime.strptime(x['event_time'].split('.')[0], "%Y-%m-%d %H:%M:%S")
     x['event_time'] = x['event_time'].replace(tzinfo=timezone('America/New_York'))

Я получаю эту ошибку

 TypeError: timezone() argument 1 must be datetime.timedelta, not str

dataj выглядит так:

P(dataj[0])
{'$insert_id': '14ae91db-4b9e-4898-88dd-62fc9f99dcb4',
 '$schema': 12,
 'adid': None,
 'event_time': '2019-12-01 00:00:19.251000'
 }

Ответы [ 2 ]

0 голосов
/ 17 марта 2020

Не зная всего фона ...

from datetime import datetime, timedelta
from pytz import timezone
import pytz

dataj = {'$insert_id': '14ae91db-4b9e-4898-88dd-62fc9f99dcb4','$schema': 12, 'adid': None,'event_time': '2019-12-01 00:00:19.251000'}

print(dataj)

for schema, value in dataj.items():
    if schema == 'event_time':
        correct_time = datetime.strptime(dataj["event_time"].split('.')[0], "%Y-%m-%d %H:%M:%S")
        dataj['event_time'] = correct_time.replace(tzinfo=timezone('America/New_York'))

print(dataj)
0 голосов
/ 17 марта 2020

Этот ответ показывает, как добавить необходимые часовые пояса к объекту datetime. Вам нужно использовать pytz.

Вот сегмент, похожий на ваш пост.

import datetime
import pytz
x = '2019-12-01 00:00:19.251000'
as_datetime = datetime.datetime.strptime(x.split('.')[0], "%Y-%m-%d %H:%M:%S")
as_datetime # datetime.datetime(2019, 12, 1, 0, 0, 19)

utcmoment = as_datetime.replace(tzinfo=pytz.utc)
as_nytz = utcmoment.astimezone(pytz.timezone('America/New_York'))
as_nytz # datetime.datetime(2019, 11, 30, 19, 0, 19, tzinfo=<DstTzInfo 'America/New_York' EST-1 day, 19:00:00 STD>)
...