как получить секунды времени с помощью python

#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
  

Я думаю, это может решить вашу проблему.