#python #python-3.x
#python #python-3.x
Вопрос:
У меня есть API, которому я должен отправить дату начала и окончания эпохи. Единственная проблема заключается в том, что он не будет принимать микросекунды.
Я создал функцию времени, используя datatime, однако она вычисляет микросекунды. Я попробовал .replace (микросекунда = 0), но это просто оставляет .0 в эпоху, на которую жалуется мой API. Я также пытался экспортировать в strptime, но затем моей функции .timestamp не удается проанализировать ее как строку.
timestart = datetime.now() - timedelta(hours = 24)
timeend = datetime.now()
params = {'start_date':timestart.timestamp(), 'end_date':timeend.timestamp()}
я хотел бы в основном рассчитать текущее время в эпохе и время 24 часа назад (это не обязательно должно быть сверхточным), которое я могу передать своему API.
Ответ №1:
Вы можете просто cast
(Преобразование типа) преобразовать значения timestart.timestamp()
и timeend.timestamp()
, которые являются floats
, в ints
, т.е.:
from datetime import datetime, timedelta
timestart = datetime.now() - timedelta(hours = 24)
timeend = datetime.now()
s = int(timestart.timestamp())
e = int(timeend.timestamp())
params = {'start_date':s, 'end_date':e}
print(params)
Вывод:
{'start_date': 1554121647, 'end_date': 1554208047}
Комментарии:
1. Это было идеально! Большое спасибо!
2. Добро пожаловать @JessicaFerguson, спасибо за то, что ты добропорядочный гражданин и принял правильный ответ.
Ответ №2:
Я обычно использую time.mktime()
для преобразования datetimes в время эпохи:
from datetime import datetime, timedelta
import time
timestart = datetime.now() - timedelta(hours = 24)
timeend = datetime.now()
params = {
'start_date': int(time.mktime(timestart.timetuple())),
'end_date': int(time.mktime(timeend.timetuple()))
}
# Output
{'start_date': 1554123099, 'end_date': 1554209499}
Ответ №3:
Альтернативное решение, предложенное Педро:
from datetime import datetime
from datetime import timedelta
timestart = (datetime.now() - timedelta(hours = 24)).strftime("%s")
timeend = datetime.now().strftime("%s")
params = {'start_date':timestart,
'end_date':timeend}
Вывод:
{'start_date': '1554124346', 'end_date': '1554210746'}