用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) |
06 | # @博客(blog): http://www.xefan.com http://yige.org/ |
07 | # @时间(date): 2012-04-13 |
08 | # |
09 |
10 | monthday = [ 31 , 28 , 31 , 30 , 31 , 30 , 31 , 31 , 30 , 31 , 30 , 31 ] |
11 | weekname = [ "星期日" , "星期一" , "星期二" , "星期三" , "星期四" , "星期五" , "星期六" ] |
12 | # 计算某年某月某日是星期几 |
13 | # 基姆拉尔森计算公式 |
14 | def 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 |
21 | year, month = input ( "输入日期,如:2012,4:" ) |
22 | if year % 4 = = 0 : |
23 | monthday[ 1 ] = 29 |
24 | w = week(year, month, 1 ) |
25 |
26 | print ( "%d年%d月" % (year, month)) |
27 | print weekname[ 0 ], weekname[ 1 ], weekname[ 2 ], weekname[ 3 ], weekname[ 4 ], weekname[ 5 ], weekname[ 6 ] |
28 | i = 0 |
29 | while i < w: |
30 | print ( " " ), |
31 | i = i + 1 |
32 | i = 1 |
33 | while 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]$ |
相关文章
- Python实现115网盘自动摇奖 2012/11/22
- Python列表解析的方法 2012/11/21
- Python中全局变量的操作 2012/11/20
- Python实现二分查找 2012/11/20
- Python对文件批量随机重命名 2012/11/20
- Python做磁盘文件服务器 2012/11/20
- IIS7.0+Python环境搭建步骤 2012/11/19
- 在IIS中如何执行Python脚本 2012/11/19
- 谈Python集合运算 2012/11/17
- Python中lambda表达式使用方法 2012/11/17