用Python来打印日历


Python #日历2012-11-22 23:56
基姆拉尔森计算公式
W= (d+2*m+3*(m+1)/5+y+y/4-y/100+y/400) mod 7
在公式中d表示日期中的日数+1,m表示月份数,y表示年数。
注意:在公式中有个与其他公式不同的地方:

把一月和二月看成是上一年的十三月和十四月,例:如果是2004-1-10则换算成:2003-13-10来代入公式计算。

01#!/usr/bin/env python
02#-*- coding:utf-8 -*-
03##
04# @文件名(file): date.py
05# @作者(author): 龙昌锦(LongChangjin)
07# @时间(date): 2012-04-13
08#
09 
10monthday = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
11weekname = ["星期日","星期一","星期二","星期三","星期四","星期五","星期六"]
12# 计算某年某月某日是星期几
13# 基姆拉尔森计算公式
14def week(y, m, d):
15    if m == 1 or m == 2:
16        m = m + 12
17        y = y - 1
18    w = ((d + 2 * m + 3 * (m+1) / 5 + y + y/4 - y/100 + y/400) + 1) % 7
19    return int(w)
20 
21year, month = input("输入日期,如:2012,4:")
22if year%4 == 0:
23    monthday[1] = 29
24w = week(year, month, 1)
25 
26print("%d年%d月" % (year, month))
27print weekname[0], weekname[1], weekname[2], weekname[3], weekname[4], weekname[5], weekname[6]
28i = 0
29while i < w:
30    print("      "),
31    i = i + 1
32i = 1
33while i <= monthday[month-1]:
34    print("%3d   " % i),
35    i = i + 1
36    w = w + 1
37    if w == 7:
38        print("")
39        w = 0
40 
41#运行结果如下:
42#[lcj@lcj time]$ python date.py
43#输入日期,如:2012,4:2012,2
44#2012年2月
45#星期日 星期一 星期二 星期三 星期四 星期五 星期六
46#                       1      2      3      4
47#  5      6      7      8      9     10     11
48# 12     13     14     15     16     17     18
49# 19     20     21     22     23     24     25
50# 26     27     28     29
51#[lcj@lcj time]$


相关文章

粤ICP备11097351号-1