[Python标准库]calendar——处理日期
来源:互联网 发布:淘宝多久删除炒作评价 编辑:程序博客网 时间:2024/06/08 07:01
[Python标准库]calendar——处理日期
作用:calendar 模块实现了一些类来处理日期,管理面向年、月和周的值。
Python 版本:1.4 版本,2.5 中做了更新
calendar 模块定义了 Calendar 类,其中封装了一些值的计算,如给定一个月或一年中的周几。另外,TextCalendar 和 HTMLCalendar 类可以生成经过预格式化的输出。
格式化示例
prmonth() 方法是一个简单的函数,可以生成一个月的格式化文本输出。
作用:calendar 模块实现了一些类来处理日期,管理面向年、月和周的值。
Python 版本:1.4 版本,2.5 中做了更新
calendar 模块定义了 Calendar 类,其中封装了一些值的计算,如给定一个月或一年中的周几。另外,TextCalendar 和 HTMLCalendar 类可以生成经过预格式化的输出。
格式化示例
prmonth() 方法是一个简单的函数,可以生成一个月的格式化文本输出。
import calendarc = calendar.TextCalendar(calendar.SUNDAY)c.prmonth(2011, 7)
这个例子按照美国的惯例,将 TextCalendar 配置为一周从星期日开始。默认会使用欧洲惯例,即一周从星期一开始。
利用 HTMLCalendar 和 formatmonth() 可以生成一个类似的 HTML 表格。显示的输出看起来与纯文本的版本大致是一样的,不过会用 HTML 标记包围。各个表单元格有一个类属性对应星期几,所以可以通过 CSS 指定 HTML 样式。
要使用可用默认格式之外的某种格式生成输出,可以使用 calendar 计算日期,并把这些值组织为周和月,然后迭代处理结果。对于这个任务,Calendar 的 weekheader()、monthcalendar() 和 yeardays2calendar() 方法尤其有用。
调用 yeardays2calendar() 会生成一个由“月栏”列表构成的序列。每个列表包含一些月,每个月是一个周列表。周是元组列表,元组则由日编号(1~31)和星期几(0~6)构成。当月以外的日编号为 0。
利用 HTMLCalendar 和 formatmonth() 可以生成一个类似的 HTML 表格。显示的输出看起来与纯文本的版本大致是一样的,不过会用 HTML 标记包围。各个表单元格有一个类属性对应星期几,所以可以通过 CSS 指定 HTML 样式。
要使用可用默认格式之外的某种格式生成输出,可以使用 calendar 计算日期,并把这些值组织为周和月,然后迭代处理结果。对于这个任务,Calendar 的 weekheader()、monthcalendar() 和 yeardays2calendar() 方法尤其有用。
调用 yeardays2calendar() 会生成一个由“月栏”列表构成的序列。每个列表包含一些月,每个月是一个周列表。周是元组列表,元组则由日编号(1~31)和星期几(0~6)构成。当月以外的日编号为 0。
import calendarimport pprintcal = calendar.Calendar(calendar.SUNDAY)cal_data = cal.yeardays2calendar(2011, 3)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)
调用 yeardays2calendar(2011, 3) 会返回 2011 年的数据,按每栏 3 个月组织。
这等价于 formatyear() 使用的数据。
这等价于 formatyear() 使用的数据。
import calendarcal = calendar.TextCalendar(calendar.SUNDAY)print cal.formatyear(2011, 2, 1, 1, 3)
day_name、day_abbr、month_name 和 month_abbr 模块属性对于生成定制格式的输出很有用(例如,在 HTML 输出中包含链接)。这些属性会针对当前本地化环境正确地自动配置。
计算日期
尽管 calendar 模块主要强调采用不同格式打印完整的日历,它还提供了另外一些函数,对采用其他方式处理日期很有用,如为一个重复事件计算日期。例如,Python Atlanta Users Group 每月的第二个星期四会召开一次会议。要计算一年中的会议日期,可以使用 monthcalendar() 的返回值。
计算日期
尽管 calendar 模块主要强调采用不同格式打印完整的日历,它还提供了另外一些函数,对采用其他方式处理日期很有用,如为一个重复事件计算日期。例如,Python Atlanta Users Group 每月的第二个星期四会召开一次会议。要计算一年中的会议日期,可以使用 monthcalendar() 的返回值。
import calendarimport pprintpprint.pprint(calendar.monthcalendar(2011, 7))
有些日期的值为 0。这说明尽管这几天属于另一个月,但与给定的当前月中的几天同属一个星期。
一周中的第一天默认为星期一。可以通过调用 setfirstweekday() 改变这个设置,不过由于 calendar 模块包含一些常量来索引 monthcalendar() 返回的日期区间,所以在这种情况下跳过这一步会更方便。
要计算 2011 年的会议日期,假设是每个月的第二个星期四,0 值指示第一周的星期四是否包含在这个月内(或者不包含在这个月中,比如这个月从星期五开始)。
一周中的第一天默认为星期一。可以通过调用 setfirstweekday() 改变这个设置,不过由于 calendar 模块包含一些常量来索引 monthcalendar() 返回的日期区间,所以在这种情况下跳过这一步会更方便。
要计算 2011 年的会议日期,假设是每个月的第二个星期四,0 值指示第一周的星期四是否包含在这个月内(或者不包含在这个月中,比如这个月从星期五开始)。
import calendar# Show every monthfor month in range(1, 13): # Compute the dates for each week that overlaps the month c = calendar.monthcalendar(2011, month) first_week = c[0] second_week = c[1] third_week = c[2] # If there is a Thursday in the first week, the second Thursday # is in the second week. Otherwise, the second Thursday must # be in the third week. if first_week[calendar.THURSDAY]: meeting_date = second_week[calendar.THURSDAY] else: meeting_date = third_week[calendar.THURSDAY] print '%3s: %2s' % (calendar.month_abbr[month], meeting_date)
0 0
- [Python标准库]calendar——处理日期
- Java时间日期处理——Date和Calendar
- Calendar日期处理
- java Calendar 日期处理
- Java常用类库——时间处理类Date、Calendar、GregorianCalendar以及日期格式化和计算
- 处理日期的Calendar类
- JAVA Calendar类 处理日期
- java -日期-Calendar 日期,天数,简单处理
- java语言基础(63)——日期时间处理方法(Date DateFormat Calendar)
- 十一、Calendar——日期选择控件
- Python——处理日期和时间
- Python——calendar模块
- [Python标准库]datetime——日期和时间值管理
- Python 标准日期格式
- 一个关于日期处理的类:Calendar。
- java日期处理一(Calendar,Date)
- [Java] 日期处理 02 Calendar 类
- JAVA 日期增加一天使用Calendar处理
- 详解如何实现定义一个参数个数可变的函数
- 6、数组
- 不允许SAM账户的匿名枚举
- UVA 11300 Spreading the Wealth
- Android Binder机制学习计划
- [Python标准库]calendar——处理日期
- python有关的书签
- 85. php 绘图体系
- Java RMI 简介及其优劣势总结
- 1021. 个位数统计 (15)
- Windows获取分区的UUID
- UITextField右边设置图片,以及UITextField全解
- 1022. D进制的A+B (20)
- WebKit之基于Chromium的二次开发