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 返回汉字的汉语拼音
Feb 27 Python
写了个监控nginx进程的Python脚本
May 10 Python
简单理解Python中的装饰器
Jul 31 Python
Python操作MySQL数据库9个实用实例
Dec 11 Python
Python实现一个简单的验证码程序
Nov 03 Python
python实现朴素贝叶斯分类器
Mar 28 Python
python hook监听事件详解
Oct 25 Python
Python argparse模块应用实例解析
Nov 15 Python
Python 音频生成器的实现示例
Dec 24 Python
浅谈pytorch中torch.max和F.softmax函数的维度解释
Jun 28 Python
浅谈Python描述数据结构之KMP篇
Sep 06 Python
Python 利用argparse模块实现脚本命令行参数解析
Dec 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
CodeIgniter基本配置详细介绍
2013/11/12 PHP
Ajax请求PHP后台接口返回信息的实例代码
2018/08/21 PHP
js字母大小写转换实现方法总结
2013/11/13 Javascript
js window.open弹出新的网页窗口
2014/01/16 Javascript
href下载文件根据id取url并下载
2014/05/28 Javascript
基于jQuery实现文本框缩放以及上下移动功能
2014/11/24 Javascript
一看就懂:jsonp详解
2015/06/01 Javascript
javascript文本模板用法实例
2015/07/31 Javascript
深入浅析JavaScript中with语句的理解
2016/05/12 Javascript
vue引入swiper插件的使用实例
2017/07/19 Javascript
原生JS实现日历组件的示例代码
2017/09/22 Javascript
基于vue 动态加载图片src的解决方法
2018/02/05 Javascript
WebSocket的通信过程与实现方法详解
2018/04/29 Javascript
JavaScript设计模式之装饰者模式定义与应用示例
2018/07/25 Javascript
vue获取时间戳转换为日期格式代码实例
2019/04/17 Javascript
微信小程序实现用table显示数据库反馈的多条数据功能示例
2019/05/07 Javascript
elementUI select组件value值注意事项详解
2019/05/29 Javascript
vue自定义switch开关组件,实现样式可自行更改
2019/11/01 Javascript
解决vue init webpack 下载依赖卡住不动的问题
2020/11/09 Javascript
[01:07]2015国际邀请赛 中国区预选赛精彩回顾
2015/06/15 DOTA
[53:15]2018DOTA2亚洲邀请赛3月29日 小组赛A组 KG VS OG
2018/03/30 DOTA
Python文件夹与文件的相关操作(推荐)
2016/07/25 Python
Python变量类型知识点总结
2019/02/18 Python
Linux上使用Python统计每天的键盘输入次数
2019/04/17 Python
Python中字符串List按照长度排序
2019/07/01 Python
python进程池实现的多进程文件夹copy器完整示例
2019/11/27 Python
Python3直接爬取图片URL并保存示例
2019/12/18 Python
Python如何在单元测试中给对象打补丁
2020/08/03 Python
scrapy结合selenium解析动态页面的实现
2020/09/28 Python
英国空调、除湿机和通风设备排名第一:Air Con Centre
2019/02/25 全球购物
美国二手复古奢侈品包包购物网站:LXRandCo
2019/06/18 全球购物
JAVA代码查错题
2014/10/10 面试题
杭州龙健科技笔试题.net部分笔试题
2016/01/24 面试题
工商管理自荐书
2014/07/06 职场文书
学校领导班子群众路线整改措施
2014/09/16 职场文书
2015年图书馆个人工作总结
2015/05/26 职场文书