我在python 2.7中为定时器程序编写了一些代码。缺点是结果是几秒钟,我需要Minutes:Seconds
。我试图格式化时间无济于事。任何人都可以帮忙吗?“
from Tkinter import *
import time
root = Tk()
root.title("Timer")
canvas = Canvas(root)
canvas.pack()
time=1
def tick():
canvas.delete(ALL)
global time
time += 10
if time >= 120:
canvas.create_text(180,140, font = ("Calibri",200),text=time,fill='red')
else:
canvas.create_text(180,140, font = ("Calibri",200),text=time,fill='green')
if time == 1000:
time = 0
tick()
else:
canvas.after(1000, tick)
def reset():
global time
time = 0
def close_window():
root.destroy()
b = Button(root,text="Reset", command=reset)
c = Button(root,text="Quit", command=close_window)
b.pack(side = LEFT)
c.pack(side = RIGHT)
canvas.after(1, tick)
root.mainloop()
答案 0 :(得分:11)
您可以使用datetime.timedelta
import datetime
number_of_seconds = 1000
str(datetime.timedelta(seconds=number_of_seconds))
# output
'0:16:40'
或者甚至更好,因为您只需要mm:ss
,您可以使用time.strftime
import time
number_of_seconds = 1000
time.strftime("%M:%S", time.gmtime(number_of_seconds))
# output
'16:40'
答案 1 :(得分:4)
作为一个有点懒惰的程序员,我喜欢重复使用标准库中的优秀作品(它可能会得到优化,并且肯定经过了很好的测试)。所以...:
import datetime
def secs_to_MS(secs):
return datetime.datetime.fromtimestamp(secs).strftime('%M:%S')
如果你还需要在那里待上几个小时,那也很容易:
import datetime
def secs_to_HMS(secs):
if secs < 3600:
return datetime.datetime.fromtimestamp(secs).strftime('%M:%S')
else:
return datetime.datetime.fromtimestamp(secs).strftime('%H:%M:%S')
答案 2 :(得分:2)
要将秒转换为分钟和秒,您可以使用divmod
功能:
>>> time = 1000 # 1000 seconds
>>> divmod(1000, 60)
(16, 40)
>>>
输出元组中的第一个数字是分钟,第二个是剩余的秒数。然后,您可以使用str.format
将此元组转换为所需的字符串:
>>> time = 1000
>>> '{}:{}'.format(*divmod(time, 60))
'16:40'
>>>