У меня есть входящие строки в формате UTC с учетом часового пояса, например:
'2014-11-25 01:01:00+00:00'
и хотите показать это в собственном локализованном часовом поясе - БЕЗ бита смещения UTC в конце.
например, приведенный выше пример для США/Востока должен отображаться как:
'2014-11-24 20:01:00'
Теперь я сделал небольшой метод, который будет принимать входную строку и делать это, возвращая желаемое значение. Тем не менее, это кажется ужасно неэффективным. Я использую pandas для манипулирования данными, и этот метод применяется ко всему столбцу строковых данных временных рядов в указанном выше строковом формате. Вызов метода применения через интерактивную оболочку завершил выполнение за ~ 2 секунды, но, как ни странно, выполнение кода, скомпилированного/интерпретированного в том же фрейме данных, занимает больше 15-20 секунд. Почему это? Вот как я называю это для фрейма/серии данных:
df['created_at'] = df['created_at'].apply(timeremap)
Я самоучка и явно не лучший программист. Скажите, пожалуйста, что я могу сделать, чтобы упростить этот процесс? Судя по поиску в Google, существует 5000 способов преобразования времени в python. Я открыт для любого модуля/пакета, но желательно, чтобы это было сделано в существующем стандартном питоне или пандах. Что такое «Правильный путь» для этого?
Вот мой маленький дудл:
from pandas.tseries.tools import parse_time_string
from pytz import timezone
import calendar
import datetime
def timeremap(intimestr, tz=timezone('US/Eastern')):
temp = parse_time_string(intimestr)[0]
loc = temp.astimezone(tz)
return str(dt(ut(loc)))
def dt(u):
return datetime.datetime.utcfromtimestamp(u)
def ut(d):
return calendar.timegm(d.timetuple())