1、时期与时间
在代码中,我们常常需要与时间打交道。在Python中,与时间处理有关的模块包括time、datetime以及calendar。在Python中,通常用时间戳、格式化的时间字符串和元组3中方式表示时间。
1)时间戳
通常,时间戳表示从1970年1月1日00时00分00秒开始按秒计算的偏移量,也就是从1970年1月1日00时00分00秒起到现在的总毫秒数。
时间戳是一个经加密后形成的凭证文档,包括3部分:
- 需加时间戳的文件的摘要
- DTS收到文件的时间和时间
- DTS的数字签名
一般来说,时间戳产生的过程为:用户首先将需要加时间戳的文件用Hash编码加密形成摘要,然后将该摘要发送到DTS,DTS加入收到文件摘要的日期和时间信息后再对该文件加密,最后送回用户。
书面签署文件的时间是由签署人自己写上的,而数字时间戳是由认证单位DTS添加的,以DTS收到文件的时间为依据。
注:
Python 3.5 中支持的最大时间戳为32535244799(3001-01-01 15:59:59)
2)时间格式化符号
在Python中,一般用表所示的格式化符号对时间进行格式化。
格式 | 含义 |
---|---|
%a | 本地简化星期名称 |
%A | 本地完整星期名称 |
%b | 本地简化月份名称 |
%B | 本地完整月份名称 |
%c | 本地相应的日期和时间表示 |
%d | 一个月中的第几天(01~31) |
%H | 一天中的第几个小时(24小时制,00~23) |
%I | 第几个小时(12小时制,01~12) |
%j | 一年中的第几天(001~366) |
%m | 月份(01~12) |
%M | 分钟数(00~59) |
%p | 本地AM或PM的相应符 |
%S | 秒(01~61) |
%U | 一年中的星期数(取值00~53,星期天为一星期的开始),第一个星期天之前的所有天数都放在第0周 |
%w | 一个星期中的第几天(0~6,0是星期天) |
%W | 和%U基本相同,不同的是%W以星期一为一个星期的开始 |
%x | 本地相应日期 |
%X | 本地相应时间 |
%y | 去掉世纪的年份(00~99) |
%Y | 完整的年份 |
%Z | 时区的名字(如果不存在为空字符) |
%% | %字符 |
- %p只有与%I配合使用才有效果
- 文档中强调确实是0~61,而不是59,闰年秒占两秒
- 当使用strptime()函数时,只有这一年的周数和天数确定时%U和%W才会被计算
3)struct_time元组
struct_time元组共有9个元素:年、月、日、时、分、秒、一年中第几周、一年中第几天、是否为夏令时。
Python函数用一个元组装起来的9组数字处理时间,也被称作struct_time元组。
序号 | 属性 | 字段 | 值 |
---|---|---|---|
0 | tm_year | 4位数年 | 如2008 |
1 | tm_mon | 月 | 1~12 |
2 | tm_mday | 日 | 1~31 |
3 | tm_hour | 小时 | 0~23 |
4 | tm_min | 分钟 | 0~59 |
5 | tm_sec 秒 | 0~61 | (60或61是闰秒) |
6 | tm_wday | 一周的第几日 | 0~6(0是周一) |
7 | tm_yday | 一年的第几日 | 1~366(儒略历) |
8 | tm_isdst | 夏令时 | -1、0、1、-1是决定是否为夏令时的旗帜 |
2、Time模块
函数 | 描述 |
---|---|
time() | |
localtime([secs]) | |
gmtime(t) | |
mktime(t) | |
asctime([t]) | |
ctime([secs]) | |
sleep(secs) | |
clock() | |
strftime(format[ , t]) | |
strptime(string [ , format]) |