山地人

Python 时间(Time)

山地人
山地人
2021-07-19

这一篇我们关注time类,这个类专门用来管理时间对象。通过这篇教程的学习,你会收获:

  1. 如何获取当前系统的时间戳
  2. 如何获取当前时间
  3. time和字符串之间的相互转换
  4. 如何让线程休眠

导入time模块

这篇教程使用的time模块需要使用import time先导入后,才能使用。

import time

当前系统的时间戳

要获得当前系统的时间戳,可以使用time.time()函数。这个函数返回的时间戳是以秒为单位的浮点数。

import time
time.time()

运行沙盒,观察运行结果。

获取当前时间

获取当前时间,这里有两个版本的函数 time.gmtime([secs])用于将secs秒数转换为UTC时间 time.localtime([secs])用于将secs秒数转换为本地时间。 这两个函数的参数secs可以省略,省略后函数内部会利用time.time()返回的秒数作为默认secs。 最后两个都会返回一个struct_time对象。

import time
# 获取当前UTC时间
time.gmtime()
# 获取当前本地时间
time.localtime()

运行沙盒,观察运行结果。

time转字符串

利用time.strftime(format, t)函数可以将t转换成符合format格式的字符串。

from time import localtime, strftime
strftime("%H:%M:%S", localtime())

这里的format你可以设置转换的格式,下面是一张可以使用的常用格式的表:

指令含义示例
%w以十进制数显示的工作日,其中0表示星期日,6表示星期六。0, 1, …, 6
%d补零后,以十进制数显示的月份中的一天。01, 02, …, 31
%m补零后,以十进制数显示的月份。01, 02, …, 12
%y补零后,以十进制数表示的,不带世纪的年份。00, 01, …, 99
%Y十进制数表示的带世纪的年份。0001, 0002, …, 2013, 2014, …, 9998, 9999
%H以补零后的十进制数表示的小时(24 小时制)。00, 01, …, 23
%I以补零后的十进制数表示的小时(12 小时制)。01, 02, …, 12
%p本地化的 AM 或 PM 。AM, PM (en_US); am, pm (de_DE)
%M补零后,以十进制数显示的分钟。00, 01, …, 59
%S补零后,以十进制数显示的秒。00, 01, …, 59
%j以补零后的十进制数表示的一年中的日序号。001, 002, …, 366
%W以十进制数表示的一年中的周序号(星期一作为每周的第一天)。 在新的一年中第一个第期一之前的所有日子都被视为是在第 0 周。00, 01, …, 53
%%字面的 ’%’ 字符。%

更加完整的字符串格式说明,请点击此处请查看Python官方文档

运行沙盒,观察运行结果。

字符串转成time

你也可以反过来利用time.strptime将一个字符串格式的时间转换为time

import time
time.strptime(string[, format])

比如下面的例子:

import time
time.strptime("2021-7-20 11:32:23", "%Y-%m-%d %H:%M:%S")

运行沙盒,观察运行结果。

线程休眠

利用time.sleep函数可以让当前线程休眠secs秒。

time.sleep(secs)
  • secs是定义休眠的秒数是一个浮点数。

运行沙盒,观察运行结果。

Time模块中的其他函数

Time函数中有很多有用的函数,下面这张函数表整理了一些最为常用的Time中的函数

函数描述
time.asctime([tupletime])将tupletime时间元组转换为字符串
time.perf_counter()用于基准测试的性能计数器。
time.gmttime([secs])返回secs对应的UTC时间
time.localtime([secs])返回secs对应的本地时间
time.mktime(tupletime)利用tupletime元组创建一个时间戳。
time.sleep(secs)让当前线程睡眠secs秒
time.strftime(fmt[,tupletime])将tupletime转换为fmt格式的可读字符串格式的时间
time.strptime(str, fmt=“%a %b %d %H:%M:%S Y”)根据fmt格式将str字符串转化为时间元祖
time.time()返回当前时间的时间戳,此值为从1970年1月1日开始的浮点秒数
time.tzset()根据环境变量中的TZ变量值,初始化本地时区

至此,本篇教程也到了该和你说再见的时候了,我们下期再见。

学完本篇互动教程,如果你觉得体验不错,可以把网页链接发送给你的小伙伴,让他/她也来感受一下。当然,你也可以继续看看网站上其他的的互动教程,希望`idev365`能够给你带来收获。

学习教程的过程中碰到了问题,或者对idev365有什么改进意见和想法,欢迎加入idev365微信内测群,和山地人交流你的想法。