Solución:
Necesitará usar el pytz
módulo (disponible en PyPI):
import pytz
from datetime import datetime
est = pytz.timezone('US/Eastern')
utc = pytz.utc
fmt="%Y-%m-%d %H:%M:%S %Z%z"
winter = datetime(2016, 1, 24, 18, 0, 0, tzinfo=utc)
summer = datetime(2016, 7, 24, 18, 0, 0, tzinfo=utc)
print winter.strftime(fmt)
print summer.strftime(fmt)
print winter.astimezone(est).strftime(fmt)
print summer.astimezone(est).strftime(fmt)
que imprimirá:
2016-01-24 18:00:00 UTC+0000
2016-07-24 18:00:00 UTC+0000
2016-01-24 13:00:00 EST-0500
2016-07-24 14:00:00 EDT-0400
La razón por la que necesitarás usar 'US/Eastern'
y no 'EST'
se ejemplifica en las dos últimas líneas de salida.
Si tiene una serie pandas con tipo de datos de objeto, primero puede convertirla en una serie DateTime usando pd.to_datetime ()
df[col] = pd.to_datetime(your_series, format="%Y-%m-%d %H:%M:%S", errors="coerce")
Compruebe si es consciente de la zona horaria o no utilizando series.dt.tz
df[col].dt.tz
Si no es consciente de la zona horaria, deberíamos hacerlo mediante el uso de series.dt.tz_localize (). Además, lea sobre los parámetros ambiguos e inexistentes de esta función
df[col] = your_series[col].dt.tz_localize('UTC')
Ahora convierta esta serie en la zona horaria requerida por series.dt.tz_convert ()
df[col] = your_series[col].dt.tz_convert('US/Eastern')
El método anterior se ocupará del horario de verano. Si desea verificar más zonas horarias, puede instalar pip pytz y
import pytz
pytz.common_timezones