Python печать Timedelta расчета вывода - PullRequest
0 голосов
/ 12 сентября 2018

У меня есть следующий код Python, чтобы вычислить, сколько дней, часов, минут, секунд и миллисекунд составляет количество marsdays. Я хочу вывод:

x sols = x дней, x часов, x минут, x секунд, x миллисекунд

Я узнал, что мне пришлось использовать timedelta, потому что она использует миллисекунды, которые мне нужны.

Я написал следующий код, но он не дает правильного вывода для значений. Когда им больше 60, их нужно передать, потому что 60 секунд равны 1 часу. Но значения могут пойти> 60. например, когда я ввожу значение> 1, например 4, я получаю aswer: 4 sol = 4 дня, 2 часа, 38 минут, 7220 секунд, 976 миллисекунд.

from datetime import datetime, timedelta
sol = timedelta(hours=24,minutes=39,seconds=35,milliseconds=244)
amount = input("Amount of sols: ")
earth=int(amount)*sol
hours = int(earth.seconds/3600)
minutes = int((earth.seconds-(hours*3600))/60)
secondes = int(earth.seconds-(minutes*60))
millisecondes = int(earth.microseconds/1000)
print (amount + " sol = " + str(earth.days) + ' days, ' + str(hours) + ' hours, ' + str(minutes) + ' minutes, ' + str(secondes) + ' secondes, ' + str(millisecondes) + ' millisecondes')

Часы, минуты и миллисекунды рассчитываются таким образом, потому что timedelta не может дать их по-видимому.

earth.days
earth.seconds

существует, но

earth.hours
earth.minutes
earth.milliseconds

не существует. чего я не понимаю, потому что могу дать им значения, как показано в строке 2.

Я думаю, что способ, которым я пытаюсь достичь того, чего хочу, не верен.

1 Ответ

0 голосов
/ 12 сентября 2018

Я думаю, что если вы используете «секунды» в качестве числа с плавающей запятой вместо библиотеки datetime, это будет работать лучше. В библиотеке datetime есть много предположений относительно дат и времени Земли, которые не будут действительно действительны на Марсе.

...