将秒转换为分钟和秒

时间:2015-01-03 02:54:33

标签: python string time tkinter

我在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()

3 个答案:

答案 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'

文档可用for datetime modulefor time module

答案 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'
>>>