这段代码实现了一个简单的时间戳和时间转换工具的图形界面应用程序。用户可以在界面中输入时间戳或时间,然后点击按钮执行相应的转换操作,将时间戳转换为时间,或将时间转换为时间戳。这个应用程序使用了 tkinter
进行图形界面的创建和操作,并通过线程实现了异步操作,避免界面的卡顿。
主要步骤如下:
- 导入必要的模块,包括
time
、os
、tkinter
和threading
。 - 定义了三个函数
sjc()
、zsj()
和zsjc()
,分别用于获取当前时间和时间戳、将时间戳转换为时间,以及将时间转换为时间戳。 - 定义了一个名为
thread_it
的函数,用于将函数打包成线程,以实现异步操作。 - 在主程序中,创建了一个
tkinter
窗口,并添加了三个按钮和两个输入框,用于用户输入。用户可以输入时间戳、时间,然后点击按钮执行转换操作。 - 使用
lambda
表达式将按钮与相应的函数关联,同时将函数包装成线程进行异步操作。 - 使用
window.mainloop()
启动tkinter
窗口的主事件循环,使应用程序进入运行状态。
请注意,这段代码只是一个简单的时间戳和时间转换工具的示例,你可以根据需要进行扩展和优化,例如添加更多的错误处理、界面美化、功能增强等。
import time
import os
import tkinter as tk
import threading
import datetime
def sjc():
t.delete(1.0, tk.END)
i = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
print(i)
t.insert('end', '当前时间:')
t.insert(tk.INSERT, '\n')
t.insert('end', i)
t.insert(tk.INSERT, '\n')
# 转换成时间数组
timeArray = time.strptime(i, "%Y-%m-%d %H:%M:%S")
# 转换成时间戳
timestamp = int(time.mktime(timeArray))
print(timestamp)
t.insert('end', '当前时间戳:')
t.insert('end', timestamp)
t.insert(tk.INSERT, '\n')
# utc5_beginTime = (int(timestamp/86400)+1)*86400+18000
# utc5_endTime = utc5_beginTime+86400*(int(hdts)-1)+79200
# print("----------utc-5")
# print(utc5_beginTime)
# print(utc5_endTime)
# t.insert('end',"----------utc-5")
# t.insert(tk.INSERT, '\n')
# t.insert('end', utc5_beginTime)
# t.insert(tk.INSERT, '\n')
# t.insert('end', utc5_endTime)
# t.insert(tk.INSERT, '\n')
# utc2_beginTime = (int(timestamp/86400)+1)*86400-7200
# utc2_endTime = utc2_beginTime+86400*(int(hdts)-1)+79200
# print("----------utc+2")
# print(utc2_beginTime)
# print(utc2_endTime)
# t.insert('end',"----------utc+2")
# t.insert(tk.INSERT, '\n')
# t.insert('end', utc2_beginTime)
# t.insert(tk.INSERT, '\n')
# t.insert('end', utc2_endTime)
# t.insert(tk.INSERT, '\n')
# utc8_beginTime = (int(timestamp/86400)+1)*86400-28800
# utc8_endTime = utc2_beginTime+86400*(int(hdts)-1)+79200
# print("----------utc+8")
# print(utc8_beginTime)
# print(utc8_endTime)
# t.insert('end',"----------utc+8")
# t.insert(tk.INSERT, '\n')
# t.insert('end', utc8_beginTime)
# t.insert(tk.INSERT, '\n')
# t.insert('end', utc8_endTime)
# t.insert(tk.INSERT, '\n')
def zsj():
hdts = txt.get()
if hdts == "输入时间戳":
t.insert('end', '输入时间戳')
t.insert(tk.INSERT, '\n')
return
t.insert('end', '时间戳:')
t.insert('end', hdts)
t.insert(tk.INSERT, '\n')
# 将时间戳转换为datetime对象
dt_object = datetime.datetime.fromtimestamp(int(hdts))
# 格式化输出时间
formatted_time = dt_object.strftime("%Y-%m-%d %H:%M:%S")
print("转换后的时间:", formatted_time)
t.insert('end', '时间:')
t.insert('end', formatted_time)
t.insert(tk.INSERT, '\n')
def zsjc():
sj = txt1.get()
if sj == None:
t.insert('end', '输入时间')
t.insert(tk.INSERT, '\n')
print('输入时间')
return
t.insert('end', '时间:')
t.insert('end', sj)
t.insert(tk.INSERT, '\n')
# 转换成时间数组
timeArray = time.strptime(sj, "%Y-%m-%d %H:%M:%S")
print(timeArray)
# 转换成时间戳
timestamp = int(time.mktime(timeArray))
print(timestamp)
t.insert('end', '时间戳:')
t.insert('end', timestamp)
t.insert(tk.INSERT, '\n')
def thread_it(func, *args):
'''将函数打包进线程'''
k = threading.Thread(target=func, args=args)
k.setDaemon(True)
k.start()
def get_servertime(self):
"""
获取服务器当前时间
:return:当前服务器时间戳
"""
req_body = self.get_request_body('gmGetServerTime')
rsp = self.send_http_request(req_body).json()
print(rsp['data']['serverTime'])
return rsp['data']['serverTime']
if __name__ == '__main__':
window = tk.Tk()
window.title('sjc')
window.geometry("200x300")
t = tk.Text(window, width='250', height=15, bg='LightBlue')
t.pack(side='bottom')
btn1 = tk.Button(window, text="查询时间", bg="orange", command=lambda: thread_it(sjc))
btn1.place(x=110, y=5)
btn2 = tk.Button(window, text="时间戳转时间", bg="orange", command=lambda: thread_it(zsj))
btn2.place(x=110, y=35)
btn3 = tk.Button(window, text="时间转时间戳", bg="orange", command=lambda: thread_it(zsjc))
btn3.place(x=110, y=65)
txt = tk.Entry(window, width=13)
txt.place(x=10, y=35)
txt.insert('end', 2)
txt1 = tk.Entry(window, width=13)
txt1.place(x=10, y=65)
txt1.insert('end','')
# wz1 = tk.Label(window, text='输入开服天数:')
# wz1.place(x=0, y=0)
window.mainloop()
评论前必须登录!
注册