python生成日历实例解析
作者:shichen2014 发布时间:2023-05-16 12:47:31
标签:python,生成,日历
本文实例展示了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,
希望本文所述实例对大家的Python程序设计有所帮助。


猜你喜欢
- 本文实例讲述了PHP实现的AES加密、解密封装类与用法。分享给大家供大家参考,具体如下:<?php/** * Class AES *
- 以titanic数据集为例。其中name列是字符串,现在想从其中提取title作为新的一列。例如:# create new Title co
- PyQt5访问系统剪切板QClipboard类介绍QClipboard类提供了对系统剪切板的访问,可以在应用程序之间复制和粘贴数据,它的操作
- 今天在 经纬 同学blog看到的。有这么一段代码:<ul id="demo"><li>
- 在asp编程中,我们常常使用trim(rtrim ,ltrim)函数去掉一些数据的开头和结尾的空格,笔者最近写了一个asp聊天室,看到下面的
- 注:本文所指的YUV均为YUV420中的I420格式(最常见的一种),其他格式不能用以下的代码。位深为8bit时,每个像素占用1字节,对应文
- 创建复合主键: 方法一:创建表之后,alter table table_name add primary key(字段1,字段2) 
- 如果你是个学生,你应该会C,C++和Java。还会一些VB,或C#/.NET。多少你还可能开发过一些Web网页,你知道一些HTML,CSS和
- 单例模式概念单例模式:“保证一个类仅有一个实例,并提供一个访问它的在这里插入代码片全局访问点。单例模式会阻止其他对象实例化其自己的单例对象的
- 使用python进行程序编写时,经常会使用第三方模块包。这种包我们可以通过python setup install 进行安装后,通过impo
- 以下摘录自 oreilly.JavaScript.The.Definitive.Guide.5th.Edition.Aug.200
- python等待10秒执行下一命令的方法:首先导入时间(time)模块;然后在需要等待执行的命令前调用sleep()方法,并在方法的括号里将
- 直接上码:select 'bigint unsigned' as type ,'8' as bytes ,~
- <?php $url='test.php?1=1'; $contents="fjka;fjsa;#page#
- 在循环对象和函数对象中,我们了解了循环器(iterator)的功能。循环器是对象的容器,包含有多个对象。通过调用循环器的next()方法 (
- 前言在github中经常可以看到下面的日历图,可以用来表示每一天在github上的活跃程度。类似的方法也可以用到空气质量的可视化方式中来,只
- 字典类型是Python中最常用的数据类型之一,它是一个键值对的集合,字典通过键来索引,关联到相对的值,理论上它的查询复杂度是 O(1) :&
- 有几个巨头公司,即Facebook和Netflix,决定禁止用户在控制台(console)执行JavaScript命令。 最初这是 由Fac
- 本文实例为大家分享了JS实现轮播图特效的具体代码,供大家参考,具体内容如下知识点轮播图思想:① 建立一个全局变量索引,始终标记当前显示图片。
- 常见到网上博文有错误理论,包括身边很多朋友都曾认同“可访问性(Accessibility)是为残障人士准备”的观点。其实在互联网技术领域远不