python模块详解 | time
time
这个模块提供各种与时间相关的函数。
以下是对一些术语和惯例的解释
- 初始时间因平台而异。对于Unix平台,初始时间是1970,01,01,00:00:00(UTC)。查看每个操作平台的初始时间可以使用time.gmtime(0)函数。
- 在所有POSIX平台上,从初始时间以来的秒数都不包括闰秒
- 该模块中的函数可能不处理初始时间以前和遥远未来的日期和时间,未来的分界点对于32位操作系统是2038年。
- UTC是协调世界时(以前称为格林尼治标准时间,GMT)。缩写UTC不是一个错误,而是英语和法语之间的妥协。
- DST是夏令时,在一年中的某些时候,时区通常会调整一个小时。DST规则是神奇的(由当地法律决定),每年都在变化。
- 各种实时函数的精度可能低于表示其值或参数的单位所建议的精度。
时间类型的格式
struct_time类型
它是一个具有命名元组接口的对象:可以通过索引和属性名访问值。存在以下值:
- index—attribute—values
- 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—tm_isdst可以在夏令时生效时设置为1,而在夏令时不生效时设置为0。值-1表示这是未知的。
- N/A—tm_zone—时区名称的缩写
- N/A—tm_gmtoff—协调世界时以东偏移,以秒为单位.
例如,time.struct_time(tm_year=2019, tm_mon=3, tm_mday=20, tm_hour=23, tm_min=11, tm_sec=33, tm_wday=2, tm_yday=79, tm_isdst=0)
格式化时间类型
例如,‘Wed Mar 20 23:12:26 2019’
时间戳类型
从初始时间到指定时间的秒数。 例如,time.time()得到的float类型的秒数
时间类型之间的相互转换
函数
time.asctime([t])
- 作用: 将struct_time类型的时间转换为如下形式:‘Sun Jun 20 23:21:05 1993’
- 参数: struct_time类型或tuple类型的时间,不填参数的话默认为time.localtime()得到的时间。
- 返回值:‘Sun Jun 20 23:21:05 1993’类型的时间。
time.pthread_getcpuclockid(thread_id)
- 作用: 返回指定线程id的线程特定CPU时间时钟的clk_id。
- 参数: 线程的id,可以使用threading.get_ident()或线程的ident属性得到线程id。
- 返回值: clk_id
- 注意: 只有Unix可用
time.clock_getres(clk_id)–>float
- 作用: 返回指定时钟clk_id的分辨率(精度)。有关clk_id的可接受值列表,请参考时钟ID常量。
- 注意: 只用Unix可用
time.clock_gettime_ns(clk_id)–>int
- 作用: 与clock_gettime()类似,但是返回的时间是纳秒。
- 注意: 只用Unix可用
time.clock_settime(clk_id,time:float)
- 作用: 设置指定时钟clk_id的时间。目前,CLOCK_REALTIME是clk_id惟一接受的值。
- 注意: 只用Unix可用
time.clock_settime_ns(clk_id,time:int)
- 作用: 与clock_settime()类似,但是使用纳秒设置时间。
- 注意: 只用Unix可用
time.ctime([secs])
- 作用: 将时间戳的时间转换为表示本地时间的字符串。如果没有提供secs或没有提供secs,则使用time()返回的当前时间。
- 参数: 时间戳类型的时间,如果不填默认为当前时间的时间戳。
- 返回值: 格式化类型的时间,例如’Mon Mar 18 23:56:35 2019’。
time.get_clock_info(name)
- 作用: 以命名空间对象的形式获取指定时钟的信息。
- 参数:
- clock: time.clock()
- monotonic: time.monotonic()
- perf_counter: time.perf_counter()
- process_time: time.process_time()
- tread_time: time.tread_time()
- time: time.time()
- 返回值:
- adjustable:如果时钟可以自动更改(例如由NTP守护进程)或由系统管理员手动更改,则为True,否则为False。
- implementation:用于获取时钟值的底层C函数的名称。有关可能的值,请参考时钟ID常量。
- monotonic:如果时钟不能倒转,则为真,反之为假。
- resolution:时钟的分辨率(以秒为单位)(浮点数)。
- 例如,namespace(adjustable=False, implementation=‘QueryPerformanceCounter()’, monotonic=True, resolution=3.775811922277177e-07)
time.gmtime([sec])
- 作用: 将时间戳类型的时间转换为UTC中的struct_time,其中dst标志始终为零。
- 参数: 时间戳类型的时间,如果没有提供secs或没有提供secs,则使用time()返回的当前时间。
- 返回值: struct_time类型的时间
time.localtime([sec])
- 作用: 就像time.gmtime(),但是转换为本地时间。当dst应用于给定的时间时,dst标志被设置为1。
- 参数: 时间戳类型的时间,如果没有提供secs或没有提供secs,则使用time()返回的当前时间。
- 返回值: struct_time类型的时间
time.mktime(t)
- 作用: 将struct_time类型的时间转换为时间戳类型。
- 参数: struct_time类型的时间。
- 返回值: 时间戳类型。
time.monotonic()–>float
- 作用: 返回一个单调时钟的值(以分数秒为单位),即一个不能倒退的时钟。时钟不受系统时钟更新的影响。返回值的引用点是未定义的,因此只有连续调用的结果之间的差异是有效的。
time.monotonic_ns()–>int
- 作用: 和time.monotonic()类似,但返回值为纳秒。
time.perf_counter()–>float
- 作用: 返回性能计数器的值(以小数秒为单位),即具有最高可用分辨率来测量短时间的时钟。它确实包括在睡眠期间所花费的时间,并且是全系统的。返回值的引用点是未定义的,因此只有连续调用的结果之间的差异是有效的。
time.perf_counter_ns()–>int
- 作用: 和time.perf_counter()类似,但返回值为纳秒。
time.process_time()–>float
- 作用: 返回当前进程的系统和用户CPU时间之和(以小数秒为单位)。它不包括睡眠时间。根据定义,它是过程范围的。返回值的引用点是未定义的,因此只有连续调用的结果之间的差异是有效的。
time.process_time_ns()–>int
- 作用: 和time.process_time()类似,但返回值为纳秒。
time.sleep(secs)
- 作用: 在给定的秒数内挂起调用线程的执行。
- 参数: 秒数,参数可以是一个浮点数,表示更精确的睡眠时间。
time.strftime(format[,t])
-
作用: 将struct_time类型的时间转换为format参数指定格式的字符串。
-
参数:
- format:指定转换时间的字符串格式。
- t:struct_time类型的时间,如果不填默认为当前时间(即time.localtime()返回的时间)
-
返回值: 指定格式的字符串。
注: 以下指令可以嵌入格式字符串中。它们显示时没有可选的字段宽度和精度规范。
- %a–>星期的缩写
- %A–>完整的星期的名称
- %b–>月份的缩写
- %B–>完整的月份名称
- %c–>‘Wed Mar 20 21:40:19 2019’格式
- %d–>十进制数格式的日期[01,31]
- %H–>小时(24小时制) 十进制数[00,23]
- %I–>小时(12小时制) 十进制数[01,12]
- %j–>一年中的一天(十进制数)[001,366]
- %m–>月份(十进制数)[01,12]
- %M–>分钟数(十进制数)[00,59]
- %p–>AM或PM
- %S–>秒数[00,59]
- %U–>一年中的周数(星期日作为一周的第一天)十进制数[00,53],第一个星期日之前的所有日子被认为是第0周。
- %w–>星期数(十进制数)[0,6]
- %W–>一年中的周数(星期一作为一周的第一天)十进制数[00,53],第一个星期一之前的所有日子被认为是第0周。
- %x–>日期表示(月/日/不带世纪的年份)例如'03/20/19’
- %X–>时间表示(时:分:秒)例如'21:56:34’
- %y–>不带世纪的年份(十进制数)[00,99]
- %Y–>带世纪的年份(十进制数)
- %z–>时区偏移指示与格式+ HHMM或-HHMM形式的UTC / GMT的正或负时差,其中H表示十进制小时数字,M表示小数分钟数字[-23:59,+ 23:59]。
- %Z–>时区名称,例如’中国标准时间’
- %%–>’%‘字符。
time.strptime(string[,format])
-
作用: 根据格式解析表示时间的字符串。
-
参数:
- string:字符串类型的时间。
- format:提供字符串类型的时间的格式。
-
返回值: struct_time类型的时间。
**注:**format参数使用的指令与strftime()使用的指令相同;它默认为“%a %b %d %H:%M:%S %Y”,与ctime()返回的格式匹配。如果字符串不能按照格式进行解析,或者解析后有多余的数据,则会引发ValueError。当无法推断出更精确的值时,用于填充任何缺失数据的默认值是(1900、1、1、0、0、0、0、0、1、-1)。字符串和格式都必须是字符串。
time.time()–>float
- 作用: 以秒为单位以浮点数返回历元之后的时间。
time.thread_time()–>float
- 作用: 返回当前线程的系统和用户CPU时间之和(以小数秒为单位)。它不包括睡眠时间。它的定义是特定于线程的。返回值的引用点未定义,因此只有同一线程中连续调用的结果之间的差异是有效的。
time.thread_time_ns()–>int
- 作用: 和time.thread_time()类似,但是返回值是纳秒。
time.time_ns()–>int
- 作用: 和time.time()类似,但返回值是纳秒。