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 逐行分割大txt文件的方法
Oct 10 Python
用Python分析3天破10亿的《我不是药神》到底神在哪?
Jul 12 Python
python 使用值来排序一个字典的方法
Nov 16 Python
在python2.7中用numpy.reshape 对图像进行切割的方法
Dec 05 Python
python3.6使用urllib完成下载的实例
Dec 19 Python
安装docker-compose的两种最简方法
Jul 30 Python
Tensorflow tf.nn.atrous_conv2d如何实现空洞卷积的
Apr 20 Python
使用K.function()调试keras操作
Jun 17 Python
python代码能做成软件吗
Jul 24 Python
python自动化测试三部曲之request+django实现接口测试
Oct 07 Python
Python学习之time模块的基本使用
Jan 17 Python
Python中glob库实现文件名的匹配
Jun 18 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学习之数组值的操作
2011/04/17 PHP
php 大数据量及海量数据处理算法总结
2011/05/07 PHP
PHP以及MYSQL日期比较方法
2012/11/29 PHP
如何取得中文字符串中出现次数最多的子串
2013/08/08 PHP
PHP中使用Memache作为进程锁的操作类分享
2015/03/30 PHP
使用纯php代码实现页面伪静态的方法
2015/07/25 PHP
PHP面向对象详解(三)
2015/12/07 PHP
PHP Cookie学习笔记
2016/08/23 PHP
PHP使用finfo_file()函数检测上传图片类型的实现方法
2017/04/18 PHP
Javascript Global对象
2009/08/13 Javascript
extjs tabpanel限制选项卡数量实现思路及代码
2013/04/02 Javascript
JavaScript实现twitter puddles算法实例
2014/12/06 Javascript
JavaScript中的比较操作符>、=、
2014/12/31 Javascript
基于jQuery实现收缩展开功能
2016/03/18 Javascript
不能不知道的10个angularjs英文学习网站
2016/03/23 Javascript
JavaScript纯色二维码变成彩色二维码
2020/07/23 Javascript
webpack中的热刷新与热加载的区别
2018/04/09 Javascript
JavaScript轮播停留效果的实现思路
2018/05/24 Javascript
vue超时计算的组件实例代码
2018/07/09 Javascript
微信小程序自定义toast弹窗效果的实现代码
2018/11/15 Javascript
基于Vue SEO的四种方案(小结)
2019/07/01 Javascript
详解Vue Cli浏览器兼容性实践
2020/06/08 Javascript
vue-cli3访问public文件夹静态资源报错的解决方式
2020/09/02 Javascript
Python collections模块实例讲解
2014/04/07 Python
在Python的Django框架中实现Hacker News的一些功能
2015/04/17 Python
对python中的argv和argc使用详解
2018/12/15 Python
python反编译学习之字节码详解
2019/05/19 Python
详解Matplotlib绘图之属性设置
2019/08/23 Python
Selenium基于PIL实现拼接滚动截图
2020/04/10 Python
html5 canvas绘制网络字体的常用方法
2019/08/26 HTML / CSS
Bluebella美国官网:英国性感内衣品牌
2018/10/04 全球购物
思想政治自我鉴定
2013/10/06 职场文书
化妆师职业生涯规划书
2014/02/16 职场文书
Nginx 502 Bad Gateway错误原因及解决方案
2021/03/31 Servers
Go 语言结构实例分析
2021/07/04 Golang
解决spring.thymeleaf.cache=false不起作用的问题
2022/06/10 Java/Android