python日期运算_Python:日期计算器

# -*- 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)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值