Нужна помощь в удалении микросекунды из времени эпохи

#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'}