Python标准库之——time模块
前言:继上一篇学完Python,我决定熬夜整理这篇总结…,本篇总结一下Python中常用的time标准库用法,通过Demo程序来加深理解
time模块
time模块提供了各种时间相关的函数。
关于time模块的详细介绍见官方文档:time — 时间的访问和转换(参考)
Demo实例
先写个小的Demo程序展示一下time模块的相关用法,之后再做解释
'''
@Author Caso_卡索
@Date 2020-8-23 15:12
@Func 使用 time 模块显示当前时间
'''
import time
functions = {
0:"gmtime(0)返回epoch时间开始的点的struct_time",
1:"time()返回当前时间戳",
2:"localime()返回struct_time类型的当地时间",
3:"mktime()返回一个浮点数时间戳",
4:"asctime()返回格式化后的时间字符串",
5:"ctime()返回格式化后的时间字符串",
6:"strftime()返回指定格式化后的时间字符串",
7:"strptime()返回指定格式化解析后的struct_time"
}
def showcurtime():
print('%-38s%s'%(functions[0], time.gmtime(0)))
curtime = time.time()
print('%-40s%s'%(functions[1], curtime))
localtime = time.localtime(curtime)
print('%-38s%s'%(functions[2], localtime))
print('%-37s%s'%(functions[3], time.mktime(localtime)))
print('%-35s%s'%(functions[4], time.asctime(localtime)))
print('%-35s%s'%(functions[5], time.ctime(curtime)))
formatstr = "%Y-%m-%d %H:%M:%S"
formattime = time.strftime(formatstr, localtime)
print('%-33s%s'%(functions[6], formattime))
print('%-36s%s'%(functions[7], time.strptime(formattime, formatstr)))
if __name__ == '__main__':
showcurtime()
常用参数
其中的序号对应于Demo程序中的functions字典序号
序号 | 常用参数 | 功能 |
---|---|---|
0 | time.gmtime(0) | 将以自 epoch 开始的秒数表示的时间转换为 UTC 的 struct_time ,其中 dst 标志始终为零 |
1 | time.time() | 返回以浮点数表示的从 epoch 开始的秒数的时间值 |
2 | time.localtime([secs] | 与 gmtime() 相似但转换为当地时间 |
3 | time.mktime(t) | 这是 localtime() 的反函数,它返回一个浮点数,以便与 time() 兼容 |
4 | time.asctime([t]) | 转换由 gmtime() 或 localtime() 所返回的表示时间的元组或 struct_time 为以下形式的字符串: ‘Sun Jun 20 23:21:05 1993’。 |
5 | time.ctime([secs]) | 转换以距离初始纪元的秒数表示的时间为以下形式的字符串: ‘Sun Jun 20 23:21:05 1993’ 代表本地时间。 |
6 | time.strptime(string[, format]) | 根据格式解析表示时间的字符串。 返回值为一个被 gmtime() 或 localtime() 返回的 struct_time |
7 | time.strftime(format[, t]) | 转换一个元组或 struct_time 表示的由 gmtime() 或 localtime() 返回的时间到由 format 参数指定的字符串 |
该表中,epoch表示时间开始的点,并且取决于平台。对于Unix, epoch 是1970年1月1日00:00:00(UTC)。
struct_time结构
time.struct_time是一个带有named tuple接口的对象:可以通过索引和属性名访问值。
索引 | 属性 | 值 |
---|---|---|
0 | tm_year | 例如,1993 |
1 | tm_mon | range [1, 12] |
2 | tm_mday | range [1, 31] |
3 | tm_hour | range [0, 23] |
4 | tm_min | range [0, 59] |
5 | tm_sec | range [0, 61] |
6 | tm_wday | range [0, 6] ,周一为 0 |
7 | tm_yday | range [1, 366] |
8 | tm_isdst | 0, 1 或 -1 |
N/A | tm_zone | 时区名称的缩写 |
N/A | tm_gmtoff | 以秒为单位的UTC以东偏离 |
对于属性tm_isdst在调用 mktime() 时, tm_isdst 可以在夏令时生效时设置为1,而在夏令时不生效时设置为0。 值-1表示这是未知的,并且通常会导致填写正确的状态。
format字符串
format 必须是一个字符串。如果 t(struct_time)中的任何字段超出允许范围,则引发 ValueError(操作或函数接收到的值不适合)
以下是一些可以嵌入 format 字符串中的指令:
指令 | 含义 |
---|---|
%d | 十进制数 [01,31] 表示的月中日 |
%H | 十进制数 [00,23] 表示的小时(24小时制) |
%I | 十进制数 [01,12] 表示的小时(12小时制) |
%j | 十进制数 [001,366] 表示的年中日 |
%m | 十进制数 [01,12] 表示的月 |
%M | 十进制数 [00,59] 表示的分钟 |
%S | 十进制数 [00,61] 表示的秒 |
%U | 十进制数 [00,53] 表示的一年中的周数(星期日作为一周的第一天),在第一个星期日之前的新年中的所有日子都被认为是在第0周 |
%w | 十进制数 [0(星期日),6] 表示的周中日 |
%W | 十进制数 [00,53] 表示的一年中的周数(星期一作为一周的第一天)作为。在第一个星期一之前的新年中的所有日子被认为是在第0周 |
%y | 十进制数 [00,99] 表示的没有世纪的年份 |
%Y | 十进制数表示的带世纪的年份 |
%a | 本地化的缩写星期中每日的名称 |
%A | 本地化的星期中每日的完整名称 |
%b | 本地化的月缩写名称 |
%B | 本地化的月完整名称 |
%c | 本地化的适当日期和时间表示 |
%p | 本地化的 AM 或 PM |
%x | 本地化的适当日期表示 |
%X | 本地化的适当时间表示 |
%z | 时区偏移以格式 +HHMM 或 -HHMM 形式的 UTC/GMT 的正或负时差指示,其中H表示十进制小时数字,M表示小数分钟数字 [-23:59, +23:59] |
%Z | 时区名称(如果不存在时区,则不包含字符) |
%% | 字面的 ‘%’ 字符 |
注释:
- 当与 strptime() 函数一起使用时,如果使用 %I 指令来解析小时, %p 指令只影响输出小时字段。
- 范围真的是 0 到 61 ;值 60 在表示 leap seconds 的时间戳中有效,并且由于历史原因支持值 61 。
- 当与 strptime() 函数一起使用时, %U 和 %W 仅用于指定星期几和年份的计算。
作者: Caso_卡索
博客: https://blog.csdn.net/xiaoma_2018
一个独立、不甘于现状的程序员,喜欢的朋友点赞支持一下,在此感谢,Python专栏后续持续更新…
所有博客均在CSDN首发 Caso_卡索 https://blog.csdn.net/xiaoma_2018