Преобразовать локальную метку времени в метку времени эпохи Unix в Python - PullRequest
1 голос
/ 04 октября 2019

У меня есть строка даты в формате ниже (указанном на входе) местного часового пояса Азии / Калькутты с (GMT + 05: 30). Я хочу преобразовать ее в часовой пояс gmt и найти метку времени этой строки.

Вход : (по местному времени) 2019-11-09 10: 10: 10

Выход : (по времени GMT) 1573274410

Ответы [ 3 ]

0 голосов
/ 04 октября 2019

Я нашел решение

вход: (по местному времени) 2019-11-09 10: 10: 10

выход :(по Гринвичу) 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"))

это решило мою проблему.

0 голосов
/ 09 ноября 2019

Все, что вам нужно сделать, это правильно проанализировать строку времени в правильном часовом поясе, а затем получить ее метку времени:

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()

или в виде однострочного:

timezone('Asia/Calcutta').localize(datetime.strptime('2019-11-09 10:10:10', '%Y-%m-%d %H:%M:%S')).timestamp()

«GMT» здесь не имеет значения, эпоха UNIX .timestamp() не зависит от часового пояса. Вы можете сделать local_ts.timestamp() и local_ts.astimezone(pytz.utc).timestamp(), оба они приводят к одному и тому же числу, потому что они оба выражают один и тот же момент времени (просто в разных местах на земле). Все, что вам нужно сделать, это превратить вашу метку времени, выраженную в виде ГГГГ-ММ-ДД ЧЧ: ММ: СС, в осведомленный (включая часовой пояс) объект datetime, тогда его .timestamp() будет одинаковым независимо от того, в какой часовой пояс вы конвертируете его.

0 голосов
/ 04 октября 2019

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()
...