表格梳理解析python内置时间模块看完就懂

目录
  • 无参数函数
  • 时区概念
  • struct_time
  • time.strftime(format[, t])

无参数函数

先解释一下时间戳,所谓时间戳,即自1970年1月1日00:00:00所经历的秒数,然后就可以理解下面的函数了。下面代码默认

from time import *

implementation monotonic adjustable resolution
'time' GetSystemTimeAsFileTime() False True 0.015625
'thread_time' GetThreadTimes() True False 1e-07
'process_time' GetProcessTimes() True False 1e-07
'monotonic' GetTickCount64() True False 0.015625
'perf_counter' QueryPerformanceCounter() True False 1e-07

上面五组函数中,只有time.time()的值具有绝对的意义,其他值都只具有相对的意义。

通过get_clock_info函数可以查看这些时钟的特性,其输入输出分别为

implementation monotonic adjustable resolution
'time' GetSystemTimeAsFileTime() False True 0.015625
'thread_time' GetThreadTimes() True False 1e-07
'process_time' GetProcessTimes() True False 1e-07
'monotonic' GetTickCount64() True False 0.015625
'perf_counter' QueryPerformanceCounter() True False 1e-07

其中,

  • 如果时钟可以自动更改或由系统管理员手动更改,则adjustable为True,否则为False。
  • implementation表示用于获取时钟值的基础C函数的名称。
  • 如果时钟不能倒退,则monotonic为 True,否则为 False 。
  • resolution表示以秒为单位的时钟分辨率。

接下来可以测试一下这些时钟的特性。

>>> def test(n):
...   aTime = time.time()
...   aTh = time.thread_time()
...   aPr = time.process_time()
...   aMo = time.monotonic()
...   aPe = time.perf_counter()
...   for i in range(int(n)): j = i**2
...   bTime = time.time()
...   bTh = time.thread_time()
...   bPr = time.process_time()
...   bMo = time.monotonic()
...   bPe = time.perf_counter()
...   aStr = f'aTime={aTime},aTh={aTh},aPr={aPr},aMo={aMo},aPe={aPe}\n'
...   bStr = f'bTime={bTime},bTh={bTh},bPr={bPr},bMo={bMo},bPe={bPe}'
...   print(aStr+bStr)
...
>>> test(1e6)
aTime=1634625786.136904,aTh=0.03125,aPr=0.03125,aMo=199082.078,aPe=199085.4751224
bTime=1634625786.340363,bTh=0.234375,bPr=0.234375,bMo=199082.281,bPe=199085.6787309
>>> test(1e6)
aTime=1634625789.7817287,aTh=0.234375,aPr=0.234375,aMo=199085.734,aPe=199089.1195357
bTime=1634625789.981198,bTh=0.421875,bPr=0.421875,bMo=199085.921,bPe=199089.3195721
>>> test(1e6)
aTime=1634625796.3934195,aTh=0.421875,aPr=0.421875,aMo=199092.343,aPe=199095.731209
bTime=1634625796.5789576,bTh=0.609375,bPr=0.609375,bMo=199092.531,bPe=199095.9172852
>>>

可清晰地看到,在调用test的间隔中,thread_timeprocess_time并未发生变化,即二者不计算线程或者进程休眠时的时间。

一般在time模块中,最常用的两个函数分别是time.time()time.sleep(),前者用于获取时间戳,从而统计程序运行时长;后者则可以暂停线程。

可以通过time.thread_time()来检测sleep函数的功能

>>> def test(n):
...    aTime = time.time()
...    aTh = time.thread_time()
...    aPr = time.process_time()
...    time.sleep(n)
...    bTime = time.time()
...    bTh = time.thread_time()
...    bPr = time.process_time()
...    aStr = f'aTime={aTime},aTh={aTh},aPr={aPr}\n'
...    bStr = f'bTime={bTime},bTh={bTh},bPr={bPr}'
...    print(aStr+bStr)
...
>>> test(1)
aTime=1634649370.2819958,aTh=0.640625,aPr=0.640625
bTime=1634649371.2862759,bTh=0.640625,bPr=0.640625
>>> test(1)
aTime=1634649372.72013,aTh=0.640625,aPr=0.640625
bTime=1634649373.723695,bTh=0.640625,bPr=0.640625
>>> test(1)

时区概念

接下来需要介绍一些有关时间的概念

GMT:即格林威治标准时间。

UTC:世界协调时间,比格林威治更精确。

DST:D即Daylight,表示夏令时。

CST:美国、澳大利亚、中国、古巴的标准时间。

知道这些时区的概念之后,就能理解time中的常量:

常量 altzone daylight tzname timezone
时区偏移 如未定义非DST时区,则为0 时区名称 本地时区偏移

struct_time

为了更好地表示时间,time中封装了struct_time类,其成员包括

索引 属性 含义
0 tm_year 正整数
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 是否为DST
- tm_zone 时区名称的缩写
- tm_gmtoff 以秒为单位的UTC以东偏离

在了解struct_time这一数据结构之后,就能读懂下列函数。

单参函数
gmtime(secs) 将时间戳转化为UTC时间[struct_time格式]
localtime(secs) 将戳转化为本地时间[struct_time格式]
ctime(secs) 将时间戳转化为UTC时间字符串
asctime(secs) 将时间结构体转化为本地时间字符串
mktime localtime的反函数,将struct_time转为秒数

time.strftime(format[, t])

可以将struct_time通过匹配符进行格式化输出,其转换格式为

名称 含意 名称 含意
%a 星期的缩写 %A 星期的名称
%b 月份缩写 %B 月份名称
%c 适当的日期和时间表示
%d 月中日,范围[01,31] %j 年中日,范围[001,366]
%H 小时,范围[00,23] %I 小时,范围[01,12]
%M 分钟,范围[00,59] %S 秒,范围[00,61]
%p AM 或 PM
%m 月份,范围[01,12]
%U 年中周数,范围[00,53]
周日作为第一天
%W 同左,周一作为第一天
%w 周中日,范围[0(星期日),6]
%x 适当的日期表示 %X 适当的时间表示
%y 无世纪年份,范围[00,99] %Y 带世纪的年份
%z 时区偏移
%Z 时区名称
%% 字面的 ‘%' 字符。

strptime()为其反函数。

例如

>>> t = time.strftime("%a, %d %b %Y %H:%M:%S +0000", gmtime())
>>> t
'Tue, 19 Oct 2021 13:46:37 +0000'
>>> T = time.strptime(t,"%a, %d %b %Y %H:%M:%S +0000")
>>> T
time.struct_time(tm_year=2021, tm_mon=10, tm_mday=19, tm_hour=13, tm_min=46, tm_sec=37, tm_wday=1, tm_yday=292, tm_isdst=-1)

以上就是表格梳理解析python内置时间模块看完就懂的详细内容,更多关于python内置时间模块的资料请关注我们其它相关文章!

(0)

相关推荐

  • Python的时间模块datetime详解

    datetime模块用于是date和time模块的合集,datetime有两个常量,MAXYEAR和MINYEAR,分别是9999和1. datetime模块定义了5个类,分别是 1.datetime.date:表示日期的类 2.datetime.datetime:表示日期时间的类 3.datetime.time:表示时间的类 4.datetime.timedelta:表示时间间隔,即两个时间点的间隔 5.datetime.tzinfo:时区的相关信息 一.首先看一下datetime.date类

  • 详解python时间模块中的datetime模块

    Python提供了多个内置模块用于操作日期时间,像calendar,time,datetime.time模块我在之前的文章已经有所介绍,它提供的接口与C标准库time.h基本一致.相比于time模块,datetime模块的接口则更直观.更容易调用. 1.datetime中包含三个类date ,time,datetime 函数datetime.combine(date,time)可以得到dateime,datetime.date().datetime.time()可以获得date和time 2.d

  • Python之日期与时间处理模块(date和datetime)

    前言 在开发工作中,我们经常需要用到日期与时间,如: 作为日志信息的内容输出 计算某个功能的执行时间 用日期命名一个日志文件的名称 记录或展示某文章的发布或修改时间 其他 Python中提供了多个用于对日期和时间进行操作的内置模块:time模块.datetime模块和calendar模块.其中time模块是通过调用C库实现的,所以有些方法在某些平台上可能无法调用,但是其提供的大部分接口与C标准库time.h基本一致.time模块相比,datetime模块提供的接口更直观.易用,功能也更加强大.

  • Python3.5内置模块之time与datetime模块用法实例分析

    本文实例讲述了Python3.5内置模块之time与datetime模块用法.分享给大家供大家参考,具体如下: 1.模块的分类 a.标准库(Python自带):sys.os模块 b.开源模块(第三方模块) c.自定义模块 2.内建模块--time (1)在Python中通常用以下几种方式来表示时间: a.时间戳:从1970年1月1日开始到当下的时间的秒数,导入time模块(import time),调用time.time()方法即可. b.格式化的时间字符串. c.元组(struct_time)

  • 表格梳理解析python内置时间模块看完就懂

    目录 无参数函数 时区概念 struct_time time.strftime(format[, t]) 无参数函数 先解释一下时间戳,所谓时间戳,即自1970年1月1日00:00:00所经历的秒数,然后就可以理解下面的函数了.下面代码默认 from time import * implementation monotonic adjustable resolution 'time' GetSystemTimeAsFileTime() False True 0.015625 'thread_ti

  • 表格梳理python内置数学模块math分析详解

    python内置数学模块math 提供了一些基础的计算功能,下列表达式默认 from math import * 默认输入输出均为一个数字.大部分函数都很直观,望文生义即可. 其他函数 isclose(a, b, *, rel_tol=1e-09, abs_tol=0.0) 若 a 和 b 的值比较接近则返回True,否则False. rel_tol 是相对容差,表示a, b之间允许的最大差值.例如,要设置5%的容差,rel_tol=0.05.rel_tol 必须大于0. abs_tol 是最小

  • Python内置random模块生成随机数的方法

    本文我们详细地介绍下两个模块关于生成随机序列的其他使用方法. 随机数参与的应用场景大家一定不会陌生,比如密码加盐时会在原密码上关联一串随机数,蒙特卡洛算法会通过随机数采样等等.Python内置的random模块提供了生成随机数的方法,使用这些方法时需要导入random模块. import random 下面介绍下Python内置的random模块的几种生成随机数的方法. 1.random.random()随机生成 0 到 1 之间的浮点数[0.0, 1.0).注意的是返回的随机数可能会是 0 但

  • 零基础也能看懂的python内置csv模块教程

    目录 csv(Comma-Separated Values)文件是什么? python 中的 csv 文件清晰解法 读取文件 写入文件 csv 文件其它说明 csv(Comma-Separated Values)文件是什么? 它是一种文件格式,一般也被叫做逗号分隔值文件,可以使用 Excel 软件或者文本文档打开 . 其中数据字段用半角逗号间隔(也可以使用其它字符),使用 Excel 打开时,逗号会被转换为分隔符. csv 文件是以纯文本形式存储了表格数据,并且在兼容各个操作系统. 例如下面的文

  • 使用Python内置的模块与函数进行不同进制的数的转换

    binascii 模块: 它包含一个把二进制数值转换成十六进制的函数,同样也可以反过来转. #binary_value是二进制数值不是字符串,也不是int型的1010 binascii.b2a_hex(binary_value) ##binary_value 一般读二进制文件可以得到 >>'89' <type str> python自带的builtin函数: bin(num)   十进制数值 ===>二进制字符串 bin(10) >> '0b1010' <t

  • Python 内置函数速查表一览

    如下所示: 函数 功能 abs(x) 返回一个数的绝对值. 参数可以是一个整数或浮点数. 如果参数是一个复数,则返回它的模. all(iterable) 如果 iterable 的所有元素为真(或迭代器为空),返回 True any(iterable) 如果 iterable 的任一元素为真则返回 True. 如果迭代器为空,返回 False ascii(object) 返回一个表示对象的字符串 bin(x) 将一个整数转变为一个前缀为"0b"的二进制字符串 bool([x]) 返回一

  • Python 内置函数进制转换的用法(十进制转二进制、八进制、十六进制)

    使用Python内置函数:bin().oct().int().hex()可实现进制转换. 先看Python官方文档中对这几个内置函数的描述: bin(x) Convert an integer number to a binary string. The result is a valid Python expression. If x is not a Python int object, it has to define an __index__() method that returns

  • Python使用内置json模块解析json格式数据的方法

    本文实例讲述了Python使用内置json模块解析json格式数据的方法.分享给大家供大家参考,具体如下: Python中解析json字符串非常简单,直接用内置的json模块就可以,不需要安装额外的模块. 一.json字符串转为python值 json字符串: 复制代码 代码如下: {"userAccount":"54321","date":"2016-12-06 10:26:17","ClickTime"

  • Python内置加密模块用法解析

    这篇文章主要介绍了Python内置加密模块用法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 数据加密: 对称加密:数据加密和解密使用相同的密钥,主要解决数据的机密性(DES,AES) 非对称加密(公匙加密):数据加密和解密使用的不同密钥,主要用于身份的验证(DSA,RSA) 单向加密:只能加密不能解密,主要用于解决数据的完整性(MD5,SHA系列算法) Python内置加密模块: hashlib 主要提供了一些常见的单向加密算法(如MD5

  • Python内置函数详细解析

    目录 1.abs 2.all 3.any 4.callable 5.dir 6.id 7.locals 和 globals 8.hash 9.sum 10.getattr.setattr.delattr 前言: Python 自带了很多的内置函数,极大地方便了我们的开发,下面就来挑几个内置函数,看看底层是怎么实现的.内置函数位于 Python/bitlinmodule.c 中. 1.abs abs 的功能是取一个整数的绝对值,或者取一个复数的模. static PyObject * builti

随机推荐