python生成日历实例解析


Posted in Python onAugust 21, 2014

本文实例展示了Python生成日历的实现方法。该实例可实现一个月的日历生成5x7的列表,列表里的没个日期为datetime类型,采用python自带的 calendar 模块实现。

程序运行结果如下:

python test.py 2014 09 
2014-08-31 2014-09-01 2014-09-02 2014-09-03 2014-09-04 2014-09-05 2014-09-06 
2014-09-07 2014-09-08 2014-09-09 2014-09-10 2014-09-11 2014-09-12 2014-09-13 
2014-09-14 2014-09-15 2014-09-16 2014-09-17 2014-09-18 2014-09-19 2014-09-20 
2014-09-21 2014-09-22 2014-09-23 2014-09-24 2014-09-25 2014-09-26 2014-09-27 
2014-09-28 2014-09-29 2014-09-30 2014-10-01 2014-10-02 2014-10-03 2014-10-04

python代码如下:

#coding:utf-8
# Last modified: 2014-08-21 11:08:08 
import calendar 
import datetime 
import sys 
 
def getcal(y, m): 
 # 从周日开始 
 cal = calendar.Calendar(6) 
 if not isinstance(y, int): y = int(y) 
 if not isinstance(m, int): m = int(m) 
 if m == 1: # 1月份 
  py = y - 1; pm = 12; 
  ny = y; nm = 2 
 elif m == 12: # 12月份 
  py = y; pm = 11 
  ny = y + 1; nm = 1 
 else: 
  py = y; pm = m - 1 
  ny = y; nm = m + 1 
 pcal = cal.monthdayscalendar(py, pm) # 上一月 
 ncal = cal.monthdayscalendar(ny, nm) # 下一月 
 ccal = cal.monthdayscalendar(y, m)  # 当前 
 w1 = ccal.pop(0) # 取第一周 
 w2 = ccal.pop() # 取最后一周 
 wp = pcal.pop() # 上个月的最后一周 
 wn = ncal.pop(0) # 下个月的第一周 
 #r1 = [datetime.date(y, m ,w1[i]) or wp[i] for i in range(7)] 
 r1 = [w1[i] and datetime.date(y, m, w1[i]) or datetime.date(py, pm, wp[i]) for i in range(7)] 
 r2 = [w2[i] and datetime.date(y, m, w2[i]) or datetime.date(ny, nm, wn[i]) for i in range(7)] 
 # 转datetime 
 result = [] 
 result.append(r1) # 第一周 
 for c in ccal:  # 其他周 
  result.append([datetime.date(y,m,i) for i in c]) 
 result.append(r2) # 最后一周 
 return result 
 
if __name__ == '__main__': 
 for w in getcal(sys.argv[1], sys.argv[2]): 
  for d in w: 
   print d, 
  print

希望本文所述实例对大家的Python程序设计有所帮助。

Python 相关文章推荐
Python实现读取邮箱中的邮件功能示例【含文本及附件】
Aug 05 Python
基于Python实现的ID3决策树功能示例
Jan 02 Python
python 列表,数组,矩阵两两转换tolist()的实例
Apr 04 Python
python保存网页图片到本地的方法
Jul 24 Python
Python opencv实现人眼/人脸识别以及实时打码处理
Apr 29 Python
python获取微信企业号打卡数据并生成windows计划任务
Apr 30 Python
Python实现微信机器人的方法
Sep 06 Python
手把手教你pycharm专业版安装破解教程(linux版)
Sep 26 Python
Pytorch Tensor的统计属性实例讲解
Dec 30 Python
pytorch:model.train和model.eval用法及区别详解
Feb 20 Python
Pycharm中安装Pygal并使用Pygal模拟掷骰子(推荐)
Apr 08 Python
python数字图像处理之对比度与亮度调整示例
Jun 28 Python
MySQLdb ImportError: libmysqlclient.so.18解决方法
Aug 21 #Python
Python中除法使用的注意事项
Aug 21 #Python
Python中dictionary items()系列函数的用法实例
Aug 21 #Python
Python 不同对象比较大小示例探讨
Aug 21 #Python
python字符串连接方式汇总
Aug 21 #Python
零基础学Python(一)Python环境安装
Aug 20 #Python
Python中replace方法实例分析
Aug 20 #Python
You might like
Linux Apache PHP Oracle 安装配置(具体操作步骤)
2013/06/17 PHP
实现在同一方法中获取当前方法中新赋值的session值解决方法
2014/06/26 PHP
PHP简单实现正则匹配省市区的方法
2018/04/13 PHP
PHP递归统计系统中代码行数
2019/09/19 PHP
js模拟类继承小例子
2010/07/17 Javascript
XENON基于JSON变种
2010/07/27 Javascript
jquery禁止回车触发表单提交
2014/12/12 Javascript
JavaScript如何动态创建table表格
2020/08/02 Javascript
JS创建对象几种不同方法详解
2016/03/01 Javascript
Javascript实现代码折叠功能
2016/08/25 Javascript
BootStrap与validator 使用笔记(JAVA SpringMVC实现)
2016/09/21 Javascript
JS正则匹配URL网址的方法(可匹配www,http开头的一切网址)
2017/01/06 Javascript
JavaScript中清空数组的三种方式
2017/03/22 Javascript
基于Vue+element-ui 的Table二次封装的实现
2018/07/20 Javascript
vue.js层叠轮播效果的实例代码
2018/11/08 Javascript
微信小程序 轮播图实现原理及优化详解
2019/09/29 Javascript
Vue列表如何实现滚动到指定位置样式改变效果
2020/05/09 Javascript
Element Carousel 走马灯的具体实现
2020/07/26 Javascript
JavaScript实现雪花飘落效果
2020/12/27 Javascript
[01:05:29]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Aster BO3 第二场 1月24日
2021/03/11 DOTA
Python排序搜索基本算法之归并排序实例分析
2017/12/08 Python
python如何让类支持比较运算
2018/03/20 Python
详解python列表生成式和列表生成式器区别
2019/03/27 Python
python如何制作英文字典
2019/06/25 Python
基于Python中random.sample()的替代方案
2020/05/23 Python
Python 打印自己设计的字体的实例讲解
2021/01/04 Python
CSS3实现鼠标悬停显示扩展内容
2016/08/24 HTML / CSS
德国体育用品网上商店:SC24.com
2016/08/01 全球购物
优质美利奴羊毛袜,不只是徒步旅行:Darn Tough Vermont
2018/11/05 全球购物
实习教师个人的自我评价
2013/11/08 职场文书
省文明单位申报材料
2014/05/08 职场文书
考察现实表现材料
2014/05/19 职场文书
2014高三学生考试作弊检讨书
2014/12/14 职场文书
元宵节寄语大全
2015/02/27 职场文书
Vue实现下拉加载更多
2021/05/09 Vue.js
为什么MySQL分页用limit会越来越慢
2021/07/25 MySQL