datetime.datetime.timestamp()
- это то, что вы ищете (соответствующая часть):
Для осведомленных экземпляров даты и времени возвращаемое значение вычисляется как:
(dt - datetime(1970, 1, 1, tzinfo=timezone.utc)).total_seconds()
Пример:
import datetime
now = datetime.datetime.now()
epoch = now.timestamp()
# 1542394106.155199
Реализовано в вашем примере, мы должны будем использовать другой подход, поскольку datetime.datetime.strptime()
невполне примите во внимание часовой пояс из-за ошибки ( соответствующий вопрос , где я нашел информацию).Таким образом, нам придется использовать другую встроенную функцию для его анализа ( пример здесь ):
from dateutil.parser import parse
mytime = "2018-11-12 00:30:20.000 EST"
dt = parse(mytime)
epoch = dt.timestamp()
Анализируемая строка по-прежнему является datetime.datetime
объектом, поэтому вы можете обработать ее после
Примечание: однако parse
может жаловаться на то, что читает часовой пояс, но не понимает его:
UnknownTimezoneWarning: tzname EDT identified but not understood. Pass `tzinfos` argument in order to correctly return a timezone-aware datetime. In a future version, this will raise an exception.
Возможно, вам потребуется passtzinfos
в parse()
метод в любом случае:
from dateutil.parser import parse
# from dateutil.tz import gettz # <-- can use if you know the tz to retrieve
tzinfos = {'EST': -18000, 'CET': +3600}
# another example: {"CST": gettz("America/Chicago")}
mytime = "2018-11-12 00:30:20.000 EST"
dt = parse(mytime, tzinfos=tzinfos)
epoch = dt.timestamp()
print(epoch)
Так что я думаю, в конце концов, это не так просто, как вы могли бы хотеть.