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()

time

常用参数

其中的序号对应于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 时区名称(如果不存在时区,则不包含字符)
%% 字面的 ‘%’ 字符

注释:

  1. 当与 strptime() 函数一起使用时,如果使用 %I 指令来解析小时, %p 指令只影响输出小时字段。
  2. 范围真的是 0 到 61 ;值 60 在表示 leap seconds 的时间戳中有效,并且由于历史原因支持值 61 。
  3. 当与 strptime() 函数一起使用时, %U 和 %W 仅用于指定星期几和年份的计算。

作者: Caso_卡索
博客: https://blog.csdn.net/xiaoma_2018
一个独立、不甘于现状的程序员,喜欢的朋友点赞支持一下,在此感谢,Python专栏后续持续更新…

posted @ 2020-08-23 23:01  Caso_卡索  阅读(131)  评论(0编辑  收藏  举报