#python #time
#python #время
Вопрос:
это мой код:
last_time = get_last_time()
now = time.time() - last_time
minute =
seconds =
print 'Next time you add blood is ' minute ':' seconds
Потому что восстановление крови каждые 5 минут, поэтому нужны только минута и секунда
Спасибо
Ответ №1:
Это базовая арифметика времени…если вы знаете, что минута состоит из 60 секунд, то вы могли бы найти это сами:
minute = int(now / 60)
seconds = int(now % 60)
Комментарии:
1. Это правильно, но «сейчас» — довольно неинтуитивное название. Измените его на «remaining_secs» или что-то в этом роде.
2. У нас нет других проблем? скажите это оператору
3. Извините, я хотел обратиться к OP. 🙂 Но я понимаю, почему вы, возможно, почувствовали себя оскорбленными.
4. Этот ответ также неверен, потому что в минуте не обязательно должно быть 60 секунд
5. @PaulSmith Хороший момент. Я отредактировал его снова, чтобы преобразовать в int. Модуль также может быть десятичным значением, если входные данные (каковыми они и являются в данном случае), поэтому теперь я также преобразовал это в int.
Ответ №2:
Я считаю, что разница между двумя объектами time возвращает объект timedelta. У этого объекта есть .total_seconds()
метод. Вам нужно будет разложить их на минуты секунды самостоятельно:
minutes = total_secs % 60
seconds = total_secs - (minutes * 60)
Когда вы не знаете, что делать со значением в Python, вы всегда можете попробовать это в интерактивном сеансе Python. Используйте dir(obj)
для просмотра всех атрибутов и методов любого объекта, help(obj)
чтобы просмотреть его документацию.
Обновление: я только что проверил и time.time()
возвращает не time
объект, а значение с плавающей запятой, представляющее секунды с момента эпохи. То, что я сказал, все еще применимо, но вы получаете значение total_secs
другим способом:
total_secs = round(time.time() - last_time)
Итак, вкратце:
last_time = get_last_time()
time_diff = round(time.time() - last_time)
minute = time_diff / 60
seconds = time_diff % 60 # Same as time_diff - (minutes * 60)
print 'Next time you add blood is ' minute ':' seconds
Комментарии:
1. Ерунда — time.time() просто возвращает значение с плавающей точкой. >>> time.time() 1305803305.7057121 >>> введите(time.time()) <введите ‘float’>
2. @Sentinel Да, я просто проверил и обновил свой ответ тем временем. Я также поддержал ваш ответ, поскольку он правильный. У меня возникает соблазн удалить свой ответ, но я оставлю его на всякий случай, если zjm1126 захочет скопировать из него код.
3. timedelta.total_seconds() работает на Python 2.7 и выше.
Ответ №3:
В Python 3,
>>import time
>>time.localtime()
time.struct_time(tm_year=2018, tm_mon=7, tm_mday=16, tm_hour=1, tm_min=51, tm_sec=39, tm_wday=0, tm_yday=197, tm_isdst=0)
Вы можете очистить минуты и секунды таким образом,
>>time.localtime().tm_min
51
>>time.localtime().tm_sec
39
Я думаю, это может решить вашу проблему.