因为一直要计算当天日期往前推N天的日期,所以想做一个简单的日期计算器实现这个功能。
另外把计算两个日期之间的天数也一起给加进去了,就更完整。
这个日期计算器的界面很简陋,功能也非常简单。
暂时没有做通过日历选择天数的优化,因为不会!如果有大佬可以私信我,教教我这个菜鸟。。。。
以下是运行截图
在日期计算类中:
初始化窗口(该窗口用来让用户输入日期或者天数)
cal_days计算两个日期之间的天数
cal_date计算日期(输入一个日期和天数N,计算N天前/后的日期)
import tkinter
import datetime
class DateCalculator:
def __init__(self,window):
self.window=window
# window.geometry("800x500")
window.title("日期计算器")
tkinter.Label(text="请输入两个日期,格式:20230509", font=80, height=4).grid()
tkinter.Label(text="开始日期:", font=15).grid()
self.entry1 = tkinter.Entry(window)
self.entry1.grid(pady=5)
tkinter.Label(text="结束日期:", font=15).grid()
self.entry2 = tkinter.Entry(window)
self.entry2.grid()
tkinter.Button(window,text="计算天数", width=10, height=1,command=self.cal_days).grid(pady=20)
self.result_day=tkinter.Label(text="")
self.result_day.grid()
tkinter.Label(text="输入日期",font=15).grid()
self.entry3 =tkinter.Entry(window)
self.entry3.grid()
tkinter.Label(text="输入天数,负数往前计算",font=15).grid()
self.entry4 =tkinter.Entry(window)
self.entry4.grid()
tkinter.Button(window,text="结果计算",width=10,height=1,command=self.cal_date).grid(pady=20)
self.result_day1=tkinter.Label(text="")
self.result_day1.grid()
def cal_days(self):
start=self.entry1.get()
end=self.entry2.get()
try:
day = (datetime.datetime.strptime(end, '%Y%m%d') - datetime.datetime.strptime(start, '%Y%m%d')).days
self.result_day.config(text=f"日期间隔{day}天",fg="red",font=15)
except ValueError:
self.result_day.config(text="日期格式错误")
def cal_date(self):
date1=self.entry3.get()
day=self.entry4.get()
try:
day1=((datetime.datetime.strptime(date1,'%Y%m%d'))+datetime.timedelta(days=int(day))).date()
self.result_day1.config(text=f"相差{day}天:{day1}",fg="red",font=15)
except ValueError:
self.result_day1.config(text="输入格式错误")
if __name__ == '__main__':
window = tkinter.Tk()
date_cal=DateCalculator(window)
window.mainloop()
main函数里:
创建主窗口
创建日期计算器
程序循环执行,并进入等待和处理事件