Все, что вам нужно сделать, это правильно проанализировать строку времени в правильном часовом поясе, а затем получить ее метку времени:
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()
будет одинаковым независимо от того, в какой часовой пояс вы конвертируете его.