欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Python:easygui制作日期计算器

程序员文章站 2024-02-27 13:03:03
...

代码流程

  • 选择需要计算的功能
    • 计算两个日期相差天数
    • 判断日期属于该年第几周星期几
    • 判断日期是该年的第几天
  • 判断输入的日期是否合法
  • 判断是否要继续计算

运行截图

Python:easygui制作日期计算器

Python:easygui制作日期计算器

Python:easygui制作日期计算器

Python:easygui制作日期计算器

Python:easygui制作日期计算器

代码

# -*- coding: utf-8 -*-
"""
Created on Fri Aug 16 2019

@author: YangYang
"""
import easygui as g
import datetime
# 获取今天的日期
today = datetime.date.today()

# 判断日期是否合法
def is_date(date):
    try:
        datetime.datetime.strptime(date,"%Y-%m-%d")
        return True
    except:
        return False

#计算两个日期相差天数
def Caltime():
    msg = "请输入需要计算的日期"
    title = "计算两个日期的差"
    fieldNames = ["日期1", "日期2"]
    fieldValues = [today,today]  
    fieldValues = g.multenterbox(msg,title, fieldNames,values = fieldValues)
    while True:
        date1 = fieldValues[0]
        date2 = fieldValues[1]
        if is_date(date1) and is_date(date2):
            # 将字符串转为日期
            date1 = datetime.datetime.strptime(date1,"%Y-%m-%d")
            date2 = datetime.datetime.strptime(date2,"%Y-%m-%d")
            date_difference = date2-date1
            fieldNames.append("计算结果")
            fieldValues.append(date_difference.days)  
            msg = "计算结果"
            g.multenterbox(msg,title, fieldNames,values = fieldValues)
            break
        else:
            g.msgbox("日期格式输入错误,请重新输入")
            fieldValues = g.multenterbox(msg,title, fieldNames,values = fieldValues)

# 判断日期属于第几周星期几    
def Calcalendar():
    msg = "请输入需要计算的日期"
    title = "判断日期属于第几周星期几"
    fieldNames = ["日期"]
    fieldValues = [today]  
    fieldValues = g.multenterbox(msg,title, fieldNames,values = fieldValues)
    while True:
        date = fieldValues[0]       
        if is_date(date):            
            date = datetime.datetime.strptime(date,"%Y-%m-%d")
            fieldNames.append("计算结果")
            calendar = datetime.date.isocalendar(date)
            fieldValues.append("{}年第{}周星期{}".format(calendar[0],calendar[1],calendar[2]))  
            msg = "计算结果"
            g.multenterbox(msg,title, fieldNames,values = fieldValues)
            break
        else:
            g.msgbox("日期格式输入错误,请重新输入")
            fieldValues = g.multenterbox(msg,title, fieldNames,values = fieldValues)

# 判断日期是该年的第几天
def Caldays():
    msg = "请输入需要计算的日期"
    title = "判断日期是该年的第几天"
    fieldNames = ["日期"]
    fieldValues = [today]  
    fieldValues = g.multenterbox(msg,title, fieldNames,values = fieldValues)
    while True:
        date = fieldValues[0]       
        if is_date(date):   
            y,m,d=map(int,date.split("-"))
            D=0
            days=[31,0,31,30,31,30,31,31,30,31,30,31]
            if ((y%400==0)|((y%4==0)&(y%100!=0))):
                days[1]=29
            else:
                days[1]=28
            for i in range(m-1):
                D=D+days[i]
            fieldNames.append("计算结果")
            fieldValues.append("{}年第{}天".format(y,D+d))  
            msg = "计算结果"
            g.multenterbox(msg, title, fieldNames, values = fieldValues)
            break
        else:
            g.msgbox("日期格式输入错误,请重新输入")
            fieldValues = g.multenterbox(msg,title, fieldNames,values = fieldValues)

            
# 判断是否要继续计算    
def CalReply():    
    msg = "是否继续计算"
    choices = ["是","否"]
    reply = g.buttonbox(msg, choices=choices)
    if reply == "是":
        return True
    else:
        return False

# 选择需要计算的功能
def CalDate(choice): 
    if choice ==  "计算两个日期的差":
        Caltime()           
    if choice ==  "判断日期属于第几周星期几":
        Calcalendar()            
    if choice ==  "判断日期是该年的第几天":
        Caldays()
    Reply = CalReply()
    if Reply==True:
        choice = g.choicebox(msg, title, choices)
        CalDate(choice)
    else:
        return False
    return True

msg ="选择你需要的功能"
title = "日期计算"
choices = ["计算两个日期的差", "判断日期属于第几周星期几", "判断日期是该年的第几天"]
choice = g.choicebox(msg, title, choices)
CalDate(choice)

参考文献

  1. EasyGui Tutorial
  2. datetime— Basic date and time types
  3. Python计算两个日期相差的天数
  4. 【Python】datetime库详解
相关标签: Python python