Python日期操作和wxpython简单界面

        在写报名表处理、分析的时候,我基友问我怎么在excel中统计一段日期内有几个周几周几周几,我说这似乎跟excel没啥关系吧?要不我给你写一个小程序,分别输入开始日期和结束日期,然后属于想要统计的周几,然后就出来统计结果,他说可以。

        因为设计到日期,可以用python的datetime包来计算比手动实现(还要分闰年)容易得多。

        首先通过input()获取键盘输入,将开始日期字符串存放在变量中,因为事先指定(跟基友说好)输入的格式为'xxxx.xx.xx'格式,即分隔符使用点,所以可以用以下函数将字符串格式转化为datetime格式:

start=datetime.datetime.strptime(start_date, '%Y.%m.%d')

        start_time即字符串,'%Y.%m.%d'为输入字符串的的日期格式。

        在得到datetime格式的开始日期和结束日期后,可以直接相减,得到timedelta格式时间差,并通过调用时间差的days元素得到int类型的值。由于设定日期开始和结束都是包括在内的,所以int类型的天数还需要+1操作:

number_of_day=(end-start).days+1#包括首尾

        这样得到的number_of_day为想要的int类型的天数。

        之后一次性输入想要统计的周几周几周几,用数字表示星期数,中间用空格或点隔开(现在想了想,似乎没必要这么要求,不隔开也可以),用split分割得到存放输入的多个单个星期数的list。(似乎也可以不用分隔符分割,也可以用数字匹配等方法)。

string=input('请一次性用小写数字数字输入想要统计的周几,中间用空格或者点隔开:\n')
string=re.split(' +|\.',string)#'.'转义为'\.' 多个不同长度的分隔符之间用'|'分割开

        之后是计算string中的每个数字对应的星期数出现了几次。首先取天数除以7的整数(number_of_day//7),即计算天数内包含几个整周,设为n,则可简化为每个星期数出现了n次,然后获得开始日期的星期数(start.weekday()+1),i从1开始遍历到天数除以7的余数(剩下不足一周的天数),从开始日期的星期数开始,获得这一天的星期数((which_day+i-1)%7+1)),累加至星期数对应的映射中,最后输出即可。

    name_map={'1':'Mon','2':'Tue','3':'Wed','4':'Thur','5':'Fri','6':'Sat','7':'Sun'}
    statistics=dict()
    number_of_week=number_of_day//7
    remain_day=number_of_day%7
    for s  in string:
        statistics[name_map[s]]=number_of_week
        
    
    which_day=start.weekday()+1
    for i in range(remain_day):
        name=name_map[str((which_day+i-1)%7+1)]
        if name in statistics:
            s
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值