Функции strptime()
преобразуют строки во времена или даты, поэтому, если out_ts
- это число с плавающей запятой, вам сначала необходимо преобразовать его в строку, например:
>>> out_ts = 82128.668173
>>> time.strptime(str(out_ts), '%H%M%S.%f')
time.struct_time(tm_year=1900, tm_mon=1, tm_mday=1, tm_hour=8, tm_min=21, tm_sec=28, tm_wday=0, tm_yday=1, tm_isdst=-1)
>>> datetime.strptime(str(out_ts), '%H%M%S.%f')
datetime.datetime(1900, 1, 1, 8, 21, 28, 668173)
Однако вы будетеневозможно преобразовать эти даты в время эпохи, поскольку время эпохи - это секунды, прошедшие с 1 января 1970 года, и поскольку out_ts
содержит только информацию о часах / минутах / секундах, вы получаете даты / времена в 1900 году.
Вам нужно будет уточнить, на какую дату вы хотите рассчитать время эпохи.Время для этого примера - 8:21:28, но хотите ли вы, чтобы 01.01.1970, сегодняшняя дата или какая-то другая дата?
Простой способ добавить произвольную дату к вашему времени:использовать объект datetime.timedelta
, представляющий ваше время, а затем добавить его к объекту datetime
на нужную дату, например:
>>> from datetime import datetime, timedelta
>>> out_ts = 82128.668173
>>> dt = datetime.strptime(str(out_ts), '%H%M%S.%f')
>>> td = timedelta(hours=dt.hour, minutes=dt.minute, seconds=dt.second)
>>> td
datetime.timedelta(0, 30088)
>>> date = datetime(2012, 2, 13)
>>> full_time = date + td
>>> full_time
datetime.datetime(2012, 2, 13, 8, 21, 28)
>>> epoch = time.mktime(full_time.timetuple())
>>> epoch
1329150088.0