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

1
KAUSHAL KORADIYA 4 oct. 2019 a las 09:57

3 respuestas

La mejor respuesta

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

0
deceze 10 nov. 2019 a las 09:31

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

-2
KAUSHAL KORADIYA 9 nov. 2019 a las 11:05

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()
0
Riccardo 4 oct. 2019 a las 08:19
58231361