第四章:日期和时间-calendar:处理时间-格式化示例

4.3 calendar:处理时间
calendar模块定义了Calendar类,其中封装了一些值的计算,如给定的一个月或一年中的周日期。另外,TextCalendar和HTMLCalendar类可以生成经过预格式化的输出。

4.3.1 格式化示例
prmonth()方法是一个简单的函数,可以生成月的格式文本输出。

import calendar

c = calendar.TextCalendar(calendar.SUNDAY)
c.prmonth(2019,2)

这个例子安装美国的惯例,将TextCalendar配置为一周从星期日开始。而默认则会使用欧洲惯例,即一周从星期一开始。这个例子会生成以下输出。
运行结果:
在这里插入图片描述
利用HTMLCalendar和formatmonth()可以生成一个类似的HTML表格。显示的输出看起来与纯文本的版本大致是一样的,不过会用HTML标记包围。各个表单元格有一个类属性对应星期几,从而可以通过CSS指定HTML的样式。
除了可用的默认格式外,要想以其他的某种格式生成输出,可以使用calendar计算日期,并把这些值组织为周和月区间,然后迭代处理结果。对于这个任务,Calendar的
weekheader(),monthcalendar()和yeardays2calendar()方法尤其有用。调用yeardays2calendar()会生成一个由“月行”列表构成的序列。每个月列表包含一些月,每个月是一个周列表。周是元组列表,元组则由编号(1-31)和星期几(0-6)构成。当月意外的日编号为0。

import calendar
import pprint

cal = calendar.Calendar(calendar.SUNDAY)

cal_data = cal.yeardays2calendar(2019,2)
print('len(cal_data)          :',len(cal_data))

top_months = cal_data[0]
print('len(top_months)        :',len(top_months))

first_month = top_months[0]
print('len(first_month)       :',len(first_month))

print('first_month:')
pprint.pprint(first_month,width=65)

调用yeardays2calendar(2019,2)会返回2019年的数据,按每行3个月组织。
运行结果:
在这里插入图片描述
这等价于formatyear()使用的数据。

import calendar

cal = calendar.TextCalendar(calendar.SUNDAY)
print(cal.formatyear(2019,2,1,1,3))

如果给定相同的参数,则formatyear()会生成以下输出。
运行结果:
在这里插入图片描述

day_name,day_abbr,month_name和month_abbr模块属性对于生成定制格式的输出很有用(例如,在HTML输出中包含链接)。这些属性会针对当前本地化环境正确地自动配置。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值