Python 实现日历的方法

2018-07-02  本文已影响0人  xstalk

Python 实现日历方法

感觉写的很乱,又冗余,应该有简洁的代码实现

# -*- coding:utf-8 -*-
import time, calendar, datetime

def print_top_month(year, month, day):
    print('今天是%s年%s月%s日' %(year, month, day))
    print('-------------------------------------')
    print ('    日  一   二   三   四   五   六')

def start_day(year, month):
    '''获取每月第一天是周几和当月总天数'''
    # monthCount = calendar.monthrange(dateNow.year, dateNow.month)
    monthCount = calendar.monthrange(int(year), int(month))
    return monthCount[0]+1,monthCount[1]

def before_month(month):
    # 上个月的日期
    b_y,b_m = start_day(year, month-1)
    i,u = start_day(year, month)
    before_day = list(range(1,b_m+1))[-i:]
    for f in before_day:
        print('%5d' %f,end='')

def print_date(year, month):
    i,u = start_day(year, month)
    # if i != 7:
    #     print ('     '* i,end='')
    if i != 7:
        before_month(month)
    for t in range(1, u+1):
        print ('%5d' %t,end='')
        i += 1
        if i % 7 == 0:
            print (' ')
    if i % 7 != 0:
        after_month(year, month)

def after_month(year, month):
# 下个月的日期
    if month != 12:
        a_y,a_m = start_day(year, month+1)
        i,u = start_day(year, month)
        after_week = (calendar.weekday(year,month,u))+1
        if after_week != 7:
            o = 6-after_week
        else:
            o = 6                   
        after_day = list(range(1,a_m+1))[:o]
        for f in after_day:
            print('%5d' %f,end='')       


# 获取当前日期
# dateNow = datetime.datetime.now()
# year = dateNow.year
# month = dateNow.month
# day = dateNow.day

# 获取用户输入日期
# year, month, day = map(int,input('Please inpurt date:').split(','))

# 自定义日期
year, month, day = 2018, 8, 6

print_top_month(year, month, day)
print_date(year, month)
# after_month(year, month)

上一篇下一篇

猜你喜欢

热点阅读