python 获取某个月的全部日期,打印日历的简单算法


def w_day(y,m,d):#已知日期求星期
    c=y//100
    y=int(str(y)[-2:])
    w=(y+(y//4)+(c//4)-2*c+(26*(m+1)//10)+d-1)%7 ##蔡勒公式只适合于1582年10月15日之后
    return w

def ml(y,m,d=1):#当月有几天
    ly=(y%400==0) or (y%4==0 and y%100!=0) and 1 or 0 #闰年=1,平年=0
    return (m in (4,6,9,11) and 30 or (m==2 and 28+ly or 31))

def cal(y,m,d): #输出日历
    wf=w_day(y,m=1,d=1) #该月的第一天是星期几
    mc=[(d==x and ("["+str(x).rjust(2)+"]").center(5) or str(x).rjust(2).center(5)) for x in  range(1,ml(y,m)+1)]
    mc[:0]=[" "*5]*wf
    mc=[(i+1)%7 and j or j+"\n" for i,j in enumerate(mc)]
    td=("%s年%s月%s日  星期%s\n" %(y,m,d,("","","","","","","")[w_day(y,m,d)-1])).center(35)
    x="\n Sun  Mon  Tue  Wed  Thu  Fri  Sat\n"
    return td+x+"".join(mc)

##################################################################

if __name__ == '__main__':

    import datetime
    T=datetime.date.today()
    print("今天是:\n"+cal(T.year,T.month,T.day))

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM