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通过wxPython打开一个音频文件并播放的方法
Mar 25 Python
介绍Python的Django框架中的静态资源管理器django-pipeline
Apr 25 Python
python同时给两个收件人发送邮件的方法
Apr 30 Python
Python反射用法实例简析
Dec 22 Python
Python实现判断给定列表是否有重复元素的方法
Apr 11 Python
python 剪切移动文件的实现代码
Aug 02 Python
解决python中 f.write写入中文出错的问题
Oct 31 Python
十分钟搞定pandas(入门教程)
Jun 21 Python
解决Django中多条件查询的问题
Jul 18 Python
Python代码使用 Pyftpdlib实现FTP服务器功能
Jul 22 Python
python opencv如何实现图片绘制
Jan 19 Python
Python 键盘事件详解
Nov 11 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
使用php+apc实现上传进度条且在IE7下不显示的问题解决方法
2013/04/25 PHP
php setcookie(name, value, expires, path, domain, secure) 参数详解
2013/06/28 PHP
深入探究PHP的多进程编程方法
2015/08/18 PHP
JS 无法通过W3C验证的处理方法
2010/03/09 Javascript
JS性能优化笔记搜索整理
2013/08/21 Javascript
JavaScript实现按Ctrl键打开新页面
2014/09/04 Javascript
轻松创建nodejs服务器(2):nodejs服务器的构成分析
2014/12/18 NodeJs
Bootstrap布局之栅格系统详解
2016/06/13 Javascript
老生常谈onBlur事件与onfocus事件(js)
2016/07/09 Javascript
基于百度地图实现产品销售的单位位置查看功能设计与实现
2016/10/21 Javascript
Webpack中css-loader和less-loader的使用教程
2017/04/27 Javascript
vue.js+Echarts开发图表放大缩小功能实例
2017/06/09 Javascript
JS封装的模仿qq右下角消息弹窗功能示例
2018/08/22 Javascript
小程序实现列表点赞功能
2018/11/02 Javascript
JS中async/await实现异步调用的方法
2019/08/28 Javascript
微信小程序用户登录和登录态维护的实现
2020/12/10 Javascript
[01:16]DOTA2小知识课堂 Ep.03 芒果树无伤肉山
2019/12/05 DOTA
21行Python代码实现拼写检查器
2016/01/25 Python
python logging日志模块的详解
2017/10/29 Python
Python csv文件的读写操作实例详解
2019/11/19 Python
Keras—embedding嵌入层的用法详解
2020/06/10 Python
Python虚拟环境库virtualenvwrapper安装及使用
2020/06/17 Python
Python 微信公众号文章爬取的示例代码
2020/11/30 Python
css3绘制百度的小度熊
2018/10/29 HTML / CSS
美国新兴城市生活方式零售商:VILLA
2017/12/06 全球购物
ColourPop美国官网:卡拉泡泡,洛杉矶彩妆品牌
2019/04/28 全球购物
《第一次抱母亲》教学反思
2014/04/16 职场文书
怎样写离婚协议书
2014/09/10 职场文书
2014年控辍保学工作总结
2014/12/08 职场文书
2014年路政工作总结
2014/12/10 职场文书
2015年营业员工作总结
2015/04/23 职场文书
2017元旦、春节期间廉洁自律承诺书
2016/03/25 职场文书
pytorch锁死在dataloader(训练时卡死)
2021/05/28 Python
Node.js实现断点续传
2021/06/23 Javascript
详解Java ES多节点任务的高效分发与收集实现
2021/06/30 Java/Android
我去timi了,一起去timi是什么意思?
2022/04/13 杂记