如何将python提供的时间转换为int

时间:2014-12-15 18:03:11

标签: python

以下是我的以下代码:

from time import sleep
import datetime
print ("This is a game where you guess when 10 seconds have passed")
sleep (0.5)
input("Hit the enter key when you are ready")
start = datetime.datetime.now().time()
sleep (1)
print ("1")
sleep (1)
print ("2")
sleep (1)
print ("3...")
input
end = datetime.datetime.now().time()
time = (end) - (start)

当它到达第17行时出现错误(在计数到3之后直接)这是错误:

Traceback (most recent call last):
  File "D:/Python/Scripts/Challenges/Challenge 6 - Time Guessing Game.py", line 17, in <module>
    time = (end) - (start)
TypeError: unsupported operand type(s) for -: 'datetime.time' and 'datetime.time'

我认为我在python上很恐怖,但我需要知道的是我如何将时间变成一个整数,以便我可以减去它并得到它们第二次按Enter键的时间。 谢谢你:D 我很抱歉啊哈

3 个答案:

答案 0 :(得分:4)

您可以从每个中删除.time()来电,它将按预期工作

>>> start = datetime.datetime.now()
>>> end = datetime.datetime.now()
>>> time = end - start
>>> time
datetime.timedelta(0, 1, 279208)

float

为单位的秒数
>>> time.total_seconds()
1.279208

如果您只想要经过时间的整数分量,可以使用

>>> time.seconds
1

答案 1 :(得分:2)

endstartdatetime.time个对象,您无法减去它们。 如果您想从中减去某些内容,请选择其中一个组件,例如end.seconds - start.seconds。现在虽然这可以工作,但是因为它会在一定时间内返回秒数,所以秒数会在60秒后循环回来,这样即使在实际上已经超过十秒钟,你也可以获胜。

我将使用的是time.time(),您可以在此处详细了解:https://wiki.python.org/moin/WorkingWithTime。基本上每次调用它都会返回自1970年1月1日以来经过的秒数。如果你将它调用两次并减去它们,你将获得与当前“实际”时间无关的时间。 / p>

您可以在此处找到有关python中时间管理的更多信息:http://www.tutorialspoint.com/python/python_date_time.htm

答案 2 :(得分:1)

你可以使用time,你不需要日期时间来减去秒数:

from time import sleep, time

print ("This is a game where you guess when 10 seconds have passed")
sleep (0.5)
input("Hit the enter key when you are ready")
start = time()
sleep (1)
print ("1")
sleep (1)
print ("2")
sleep (1)
print ("3...")
input()
end = time()
diff = end - start
print(diff)

如果您想将秒作为int使用print(int(diff))