Округление длительности двух значений даты

#python #date #rounding

#python #Дата #округление

Вопрос:

У меня есть два date значения в Python, из которых я пытаюсь получить округленную длительность.

Например: с 01-01-2000 по 12-31-2099 — это действительно «100 лет», а не «99 лет».

У меня есть пример на Java, но я не уверен, как перенести это на Python speak:

 round(endDateEpochInMilliseconds -startDateEpochInMilliseconds /(365.25 * 24 * 3600 * 1000))
  

Я уверен, что нечто подобное выполнимо в Python.

Комментарии:

1. У меня совсем нет опыта работы с Python, но мне любопытно. Чего вы ожидаете, если у вас start = 04-05-2000, end = 10-11-2010? Какой результат? Голосую за интересный вопрос.

Ответ №1:

 import datetime

date1 = datetime.date(2000,1,1)
date2 = datetime.date(2099, 12, 31)

delta = date2-date1

print round(delta.days/365.25,0)
  

Ответ №2:

Вы, безусловно, должны заключить endDateEpochInMilliseconds -startDateEpochInMilliseconds в квадратные скобки!

 round( (endDateEpochInMilliseconds -startDateEpochInMilliseconds) /(365.25 * 24 * 3600 * 1000))
  

Комментарии:

1. Итак, вы хотите сказать, что этот фрагмент также может выполняться как код на Python, но с дополнительными скобками? В python у меня нет доступных переменных endDateEpochInMilliseconds и startDateEpochInMilliseconds , поэтому мне нужно будет преобразовать мои объекты date в миллисекунды эпохи как часть 2 для решения этой проблемы. —Правильно ли я думаю об этом?

2. Flowpoke: нет, я ничего не говорю о phyon, но общие математические правила (/ перед ) работают для (большинства) языков программирования одинаково. — Ваше утверждение разделило бы только startDateEpochInMilliseconds на (365.25 * 24 * 3600 * 1000 ) а затем вычтите это значение из endDateEpochInMilliseconds. И это явно неправильно.