Как удалить микросекунды из объекта timedelta? Я делаю расчет среднего времени, и я хотел бы отобразить полученное среднее без микросекунд. avg = sum(datetimes, datetime.timedelta(0)) / len(datetimes) Ответ 1 Возьмите timedetla и удалите свои собственные микросекунды, как микросекунды и атрибут только для чтения: avg = sum(datetimes, datetime.timedelta(0)) / len(datetimes) avg = avg - datetime.timedelta(microseconds=avg.microseconds) Вы можете сделать свою собственную небольшую функцию, если это повторяющаяся потребность: import datetime def chop_microseconds(delta): return delta - datetime.timedelta(microseconds=delta.microseconds) Я не нашел лучшего решения. Ответ 2 Если это только для дисплея, эта идея работает: avgString = str(avg).split(".")[0] Идея состоит в том, чтобы взять только то, что находится перед точкой. Он вернет 01:23:45 для 01: 23: 45.1235 Ответ 3 другой вариант, учитывая timedetla, вы можете сделать: avg = datetime.timedelta(seconds=math.ceil(avg.total_seconds())) Вы можете заменить math.ceil() на math.round() или math.floor(), в зависимости от ситуации. Ответ 4 Вы можете изменить элементы данных как таковые: In [1]: datetime.datetime.now().replace(hour=0, minute=0, second=0, microsecond=0) Out[1]: datetime.datetime(2017, 4, 28, 0, 0) Ответ 5 Я нашел, что это работает для меня: start_time = datetime.now() some_work() end time = datetime.now() print str(end_time - start_time)[:-3] Выход: 0:00:01.955 Я думал об этом после поиска в https://docs.python.org/3.2/library/datetime.html#timedelta-objects Надеюсь это поможет!
Ответ 1 Возьмите timedetla и удалите свои собственные микросекунды, как микросекунды и атрибут только для чтения: avg = sum(datetimes, datetime.timedelta(0)) / len(datetimes) avg = avg - datetime.timedelta(microseconds=avg.microseconds) Вы можете сделать свою собственную небольшую функцию, если это повторяющаяся потребность: import datetime def chop_microseconds(delta): return delta - datetime.timedelta(microseconds=delta.microseconds) Я не нашел лучшего решения.
Ответ 2 Если это только для дисплея, эта идея работает: avgString = str(avg).split(".")[0] Идея состоит в том, чтобы взять только то, что находится перед точкой. Он вернет 01:23:45 для 01: 23: 45.1235
Ответ 3 другой вариант, учитывая timedetla, вы можете сделать: avg = datetime.timedelta(seconds=math.ceil(avg.total_seconds())) Вы можете заменить math.ceil() на math.round() или math.floor(), в зависимости от ситуации.
Ответ 4 Вы можете изменить элементы данных как таковые: In [1]: datetime.datetime.now().replace(hour=0, minute=0, second=0, microsecond=0) Out[1]: datetime.datetime(2017, 4, 28, 0, 0)
Ответ 5 Я нашел, что это работает для меня: start_time = datetime.now() some_work() end time = datetime.now() print str(end_time - start_time)[:-3] Выход: 0:00:01.955 Я думал об этом после поиска в https://docs.python.org/3.2/library/datetime.html#timedelta-objects Надеюсь это поможет!