Tengo una cadena de fecha en el formato siguiente (dado en la entrada) de la zona horaria local de Asia / Calcuta con (GMT + 05: 30) Quiero convertirla a la zona horaria GMT y encontrar la marca de tiempo de época de esa cadena.
Entrada : (en hora local) 2019-11-09 10:10:10
Salida : (en hora GMT) 1573274410
3 respuestas
Todo lo que necesita hacer es analizar la cadena de tiempo correctamente en la zona horaria correcta, luego obtener su marca de tiempo:
from pytz import timezone
from datetime import datetime
calcutta = timezone('Asia/Calcutta')
naive_ts = datetime.strptime('2019-11-09 10:10:10', '%Y-%m-%d %H:%M:%S')
local_ts = calcutta.localize(naive_ts)
epoch_ts = local_ts.timestamp()
O como una frase:
timezone('Asia/Calcutta').localize(datetime.strptime('2019-11-09 10:10:10', '%Y-%m-%d %H:%M:%S')).timestamp()
El "GMT" es irrelevante aquí, la época UNIX .timestamp()
es independiente de la zona horaria. Puede hacer local_ts.timestamp()
y local_ts.astimezone(pytz.utc).timestamp()
, ambos resultan en el mismo número porque ambos expresan exactamente el mismo punto en el tiempo (solo en diferentes lugares en la tierra). Todo lo que necesita hacer es convertir su marca de tiempo expresada como AAAA-MM-DD HH: MM: SS en un objeto consciente (incluida la zona horaria) datetime
, luego su .timestamp()
será el mismo sin importar la zona horaria lo conviertes en
Encontré la solución
Entrada: (en hora local) 2019-11-09 10:10:10
Salida: (en hora GMT) 1573274410
import calender
import time
from dateTime import dateTime
LocalTime = "2019-11-09 10:10:10"
GmtTime = datetime.fromtimestamp(LocalTime, timezone('Asia/Calcutta').strftime("%Y-%m-%d %H:%M:%S")
GmtTimeStamp = calendar.timegm(time.strptime(str(GmtTime), "%Y-%m-%d %H:%M:%S"))
Resolvió mi problema
Python 3.3+ :
import pytz
import datetime
dt = datetime.datetime.strptime('2019-09-30 09:00', '%Y-%m-%d %H:%M')
ts = pytz.utc.localize(dt).timestamp()
Preguntas relacionadas
Nuevas preguntas
python
Python es un lenguaje de programación multipropósito, de tipificación dinámica y de múltiples paradigmas. Está diseñado para ser rápido de aprender, comprender y usar, y hacer cumplir una sintaxis limpia y uniforme. Tenga en cuenta que Python 2 está oficialmente fuera de soporte a partir del 01-01-2020. Aún así, para preguntas de Python específicas de la versión, agregue la etiqueta [python-2.7] o [python-3.x]. Cuando utilice una variante de Python (por ejemplo, Jython, PyPy) o una biblioteca (por ejemplo, Pandas y NumPy), inclúyala en las etiquetas.