概述
在上一节,我们介绍了Python的math模块,包括:math模块中一些常用的属性和函数。在这一节,我们将介绍Python的time模块。time模块是用于处理时间数据的库,它提供了各种功能来获取、表达和转换时间。该模块主要包含的功能如下:
时间获取:可以获取当前时间,包括:当前的系统时间、网络时间等。
时间格式化:可以将时间以各种格式进行输出,包括:时间戳、时间元组、格式化时间等。
时间转换:可以将时间从一种格式转换为另一种格式。
计时和性能分析:可以用来进行计时和性能分析,比如:测量代码块的运行时间等。
下面,我们将逐一介绍time模块中一些常用的属性和函数。
time.time()函数
time.time()函数会返回当前时间的时间戳,表示从1970年1月1日00:00:00开始到现在的秒数。在Python中,time.time()函数通常用于计算时间差、定时任务和其他与时间相关的操作。比如:可以使用time.time()来获取当前时间的时间戳,并将其与另一个时间戳进行比较,以计算两个时间点之间的时间差。
import time # 获取当前时间的时间戳 current_time1 = time.time() # 输出:1694938988.1193678 print(current_time1) # 等待一段时间 time.sleep(3) # 再次获取当前时间的时间戳 current_time2 = time.time() # 输出:1694938991.120983 print(current_time2) # 计算两个时间戳之间的时间差,单位为秒 time_difference = current_time2 - current_time1 # 输出:3.001615047454834 print(time_difference)
time.sleep(seconds)函数
time.sleep(seconds)函数让程序暂停指定的秒数。这个函数接受一个浮点数作为参数,表示暂停的秒数。需要注意的是:time.sleep()函数会阻塞当前线程的执行,因此在多线程环境中使用时需要谨慎。
import time # 输出:Begin print('Begin') time.sleep(3) # 过6秒后,输出:End print('End')
time.localtime()函数
time.localtime()函数返回一个包含当前本地时间的time.struct_time对象。time.struct_time是一个命名元组,包含以下9个元素,分别为:
tm_year:年份,比如:2023。 tm_mon:月份,范围为1-12。 tm_mday:一个月中的第几天,范围为1-31。 tm_hour:小时,范围为0-23。 tm_min:分钟,范围为0-59。 tm_sec:秒,范围为0-61,60和61用于闰秒。 tm_wday:一周的第几天,范围为0-6,0表示星期一。 tm_yday:一年中的第几天,范围为1-366。 tm_isdst:夏令时标记,取值为-1、0、1。 import time cur_time = time.localtime() print("年份:", cur_time.tm_year) print("月份:", cur_time.tm_mon) print("日期:", cur_time.tm_mday) print("小时:", cur_time.tm_hour) print("分钟:", cur_time.tm_min) print("秒数:", cur_time.tm_sec)
time.struct_time()函数
time.struct_time()函数创建一个time.struct_time对象,该对象表示一个本地时间。。
import time # 创建一个time.struct_time对象 t = time.struct_time((2023, 9, 17, 16, 45, 36, 0, 0, 0)) # 输出时间信息 print("年份:", t.tm_year) print("月份:", t.tm_mon) print("日期:", t.tm_mday) print("小时:", t.tm_hour) print("分钟:", t.tm_min) print("秒数:", t.tm_sec)
time.mktime(t)函数
time.mktime(t)函数将一个time.struct_time对象转化为时间戳。该函数接受一个time.struct_time对象作为参数,该对象表示一个本地时间。time.struct_time对象包含年、月、日、时、分、秒等信息。time.mktime(t)将这些信息转换为自Epoch(1970年1月1日 00:00:00 UTC)以来的秒数,并返回一个浮点数。
import time # 创建一个time.struct_time对象 t = time.struct_time((2023, 9, 17, 16, 45, 36, 0, 0, 0)) # 将time.struct_time对象转换为时间戳,输出:1694940336.0 print(time.mktime(t))
time.asctime([t])函数
time.asctime([t])函数将一个time.struct_time对象转化为字符串格式的时间。这个函数接受一个可选的 time.struct_time对象作为参数,如果不提供参数,则默认使用当前本地时间。
import time time_str = time.asctime() # 输出:Sun Sep 17 16:55:26 2023 print(time_str)
time.ctime([seconds])函数
time.ctime([seconds])函数将一个time.struct_time对象转化为字符串格式的时间,与asctime()函数功能相同。这个函数接受一个可选的参数seconds,如果不提供参数,则默认使用当前本地时间。
import time time_str = time.ctime() # 输出:Sun Sep 17 16:57:12 2023 print(time_str)
time.gmtime([seconds])函数
time.gmtime([seconds])函数返回一个包含当前UTC时间的time.struct_time对象。这个函数接受一个可选的参数seconds,如果不提供参数,则默认使用当前UTC时间。
import time utc_time = time.gmtime() print("年份:", utc_time.tm_year) print("月份:", utc_time.tm_mon) print("日期:", utc_time.tm_mday) print("小时:", utc_time.tm_hour) print("分钟:", utc_time.tm_min) print("秒数:", utc_time.tm_sec)
time.localtime([seconds])函数
time.localtime([seconds])函数返回一个包含当前本地时间的time.struct_time对象,与gmtime()相反,本函数返回的是本地时间而不是UTC时间。
import time local_time = time.localtime() print("年份:", local_time.tm_year) print("月份:", local_time.tm_mon) print("日期:", local_time.tm_mday) print("小时:", local_time.tm_hour) print("分钟:", local_time.tm_min) print("秒数:", local_time.tm_sec)
time.strftime(format[, t])函数
time.strftime(format[, t])函数将一个time.struct_time对象按照指定的格式转化为字符串。该函数接受如下两个参数。
format:一个字符串,指定了输出字符串的格式。格式字符串可以包含一些特殊的指令,用于插入日期和时间的不同组成部分。比如:%Y表示四位数的年份,%y表示两位数的年份,%m表示两位数的月份,%d表示两位数的日期,%H表示24小时制的小时数,%I表示12小时制的小时数,%M表示分钟数,%S表示秒数等。
t:可选参数,一个时间对象。如果未提供此参数,则默认为当前时间。
import time cur_time = time.strftime("%Y-%m-%d %H:%M:%S") # 输出:2023-09-17 17:07:21 print(cur_time)
time.strptime(string[, format])函数
time.strptime(string[, format])函数将一个字符串解析为time.struct_time对象。该函数接受如下两个参数。
string:要解析的时间字符串。
format:可选参数,指定了字符串的格式。
import time time_str = "2023-09-17 17:30:45" format_str = "%Y-%m-%d %H:%M:%S" time_obj = time.strptime(time_str, format_str) # 输出:time.struct_time(tm_year=2023, tm_mon=9, tm_mday=17, tm_hour=17, # tm_min=30, tm_sec=45, tm_wday=6, tm_yday=260, tm_isdst=-1) print(time_obj)