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实现跨文件全局变量的方法
Jul 07 Python
Python使用metaclass实现Singleton模式的方法
May 05 Python
Python中字符串的处理技巧分享
Sep 17 Python
在centos7中分布式部署pyspider
May 03 Python
Python实现1-9数组形成的结果为100的所有运算式的示例
Nov 03 Python
python使用tensorflow保存、加载和使用模型的方法
Jan 31 Python
Python3中编码与解码之Unicode与bytes的讲解
Feb 28 Python
简单的Python调度器Schedule详解
Aug 30 Python
python循环嵌套的多种使用方法解析
Nov 29 Python
py-charm延长试用期限实例
Dec 22 Python
python中count函数简单的实例讲解
Feb 06 Python
Python多线程实用方法以及共享变量资源竞争问题
Apr 12 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
收听困难?教您超简便短波广播抗干扰方法!
2021/03/01 无线电
PHP图片处理之使用imagecopyresampled函数裁剪图片例子
2014/11/19 PHP
Yii实现多数据库主从读写分离的方法
2014/12/29 PHP
javascript 面向对象编程基础 多态
2009/08/21 Javascript
jQuery表单验证插件formValidator(改进版)
2012/02/03 Javascript
兼容最新firefox、chrome和IE的javascript图片预览实现代码
2014/08/08 Javascript
node.js中的fs.writeFile方法使用说明
2014/12/14 Javascript
javascript事件委托的用法及其好处简析
2016/04/04 Javascript
JS本地刷新返回上一页代码
2016/07/25 Javascript
一道面试题引发的对javascript类型转换的思考
2017/03/06 Javascript
Angular2中select用法之设置默认值与事件详解
2017/05/07 Javascript
node.js 发布订阅模式的实例
2017/09/10 Javascript
AngularJS表单验证功能
2017/10/19 Javascript
使用nvm管理不同版本的node与npm的方法
2017/10/31 Javascript
vue项目打包后打开页面空白解决办法
2018/06/29 Javascript
vue v-model动态生成详解
2018/06/30 Javascript
Vue侦测相关api的实现方法
2019/05/22 Javascript
[01:08:33]OG vs VGJ.T 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
Python获取当前函数名称方法实例分享
2018/01/18 Python
TensorFlow如何实现反向传播
2018/02/06 Python
python如何实现一个刷网页小程序
2018/11/27 Python
python买卖股票的最佳时机(基于贪心/蛮力算法)
2019/07/05 Python
Python中的上下文管理器相关知识详解
2019/09/19 Python
Python&&GDAL实现NDVI的计算方式
2020/01/09 Python
美国正宗奢华复古手袋、珠宝及配饰网站:What Goes Around Comes Around
2018/07/21 全球购物
在weblogic中发布ejb需涉及到哪些配置文件
2012/01/17 面试题
党风廉政承诺书
2014/03/27 职场文书
房产委托公证书样本
2014/04/04 职场文书
开幕式邀请函
2015/01/31 职场文书
护理工作个人总结
2015/03/03 职场文书
2015年乡镇党务公开工作总结
2015/05/19 职场文书
天河观后感
2015/06/11 职场文书
运动会开幕式通讯稿
2015/07/18 职场文书
运动会5000米加油稿
2015/07/21 职场文书
oracle通过存储过程上传list保存功能
2021/05/12 Oracle
SpringBoot全局异常处理方案分享
2022/05/25 Java/Android