Python 中的 time
模块提供了与时间相关的各种函数,可以用于获取当前时间、测量时间间隔、暂停程序执行等。下面是 time
模块的主要功能及其使用方法。
1. 获取当前时间
1.1 time.time()
- 返回当前时间的时间戳(自 1970 年 1 月 1 日 00:00:00 UTC 开始的秒数)。
- 常用于计算时间间隔。
import time
# 获取当前时间戳
current_timestamp = time.time()
print(current_timestamp) # 输出类似于 1631716800.123456
1.2 time.ctime()
- 将时间戳转换为可读的字符串表示形式。
- 如果不传入参数,默认使用当前时间。
# 当前时间的可读字符串
current_time_str = time.ctime()
print(current_time_str) # 输出类似于 'Wed Sep 15 12:34:56 2024'
1.3 time.localtime()
- 将时间戳转换为当前时区的
struct_time
对象。 - 如果不传入参数,默认使用当前时间。
# 获取当前本地时间
local_time = time.localtime()
print(local_time)
1.4 time.strftime()
- 根据指定的格式将
struct_time
对象转换为字符串。 - 可以自定义时间的输出格式。
# 将当前时间格式化为指定的字符串
local_time = time.localtime()
formatted_time = time.strftime('%Y-%m-%d %H:%M:%S', local_time)
print(formatted_time) # 输出类似于 '2024-09-15 12:34:56'
%y 两位数的年份表示(00-99)
%Y 四位数的年份表示(000-9999)
%m 月份(01-12)
%d 月内中的一天(0-31)
%H 24小时制小时数(0-23)
%I 12小时制小时数(01-12)
%M 分钟数(00=59)
%S 秒(00-59)
%a 本地简化星期名称
%A 本地完整星期名称
%b 本地简化的月份名称
%B 本地完整的月份名称
%c 本地相应的日期表示和时间表示
%j 年内的一天(001-366)
%p 本地A.M.或P.M.的等价符
%U 一年中的星期数(00-53)星期天为星期的开始
%w 星期(0-6),星期天为星期的开始
%W 一年中的星期数(00-53)星期一为星期的开始
%x 本地相应的日期表示
%X 本地相应的时间表示
%Z 当前时区的名称
%% %号本身
2. 时间字符串与时间对象的转换
2.1 time.strptime()
- 将时间字符串解析为
struct_time
对象。
time_str = '2024-09-15 12:34:56'
parsed_time = time.strptime(time_str, '%Y-%m-%d %H:%M:%S')
print(parsed_time)
2.2 time.mktime()
- 将
struct_time
对象转换为时间戳。
# 将 struct_time 对象转换为时间戳
timestamp = time.mktime(parsed_time)
print(timestamp)
3. 延迟执行
3.1 time.sleep()
- 让程序暂停执行指定的时间(秒)。
# 暂停程序执行 2 秒
print('Start')
time.sleep(2)
print('End')
4. 计算时间间隔
使用 time.time()
获取时间戳,可以方便地计算两个时间点之间的间隔。
start_time = time.time()
# 模拟一些耗时操作
time.sleep(1.5)
end_time = time.time()
# 计算时间间隔
elapsed_time = end_time - start_time
print(f'Elapsed time: {elapsed_time} seconds')
5. 处理 UTC 时间
5.1 time.gmtime()
- 将时间戳转换为 UTC 时区的
struct_time
对象。
# 获取当前 UTC 时间
utc_time = time.gmtime()
print(utc_time)
6. struct_time
对象
struct_time
是 time
模块中用于表示时间的对象,它有以下 9 个属性:
tm_year
:年份tm_mon
:月份(1-12)tm_mday
:日期(1-31)tm_hour
:小时(0-23)tm_min
:分钟(0-59)tm_sec
:秒(0-61,包括闰秒)tm_wday
:星期(0-6,0 表示周一)tm_yday
:一年中的第几天(1-366)tm_isdst
:是否为夏令时(-1, 0, 1)
示例
# 使用 time.localtime() 获取当前时间的 struct_time
current_struct_time = time.localtime()
print(f"Year: {current_struct_time.tm_year}")
print(f"Month: {current_struct_time.tm_mon}")
print(f"Day: {current_struct_time.tm_mday}")
7. 总结
time
模块提供了强大的时间处理功能,涵盖了从获取当前时间、格式化时间、解析时间字符串、延迟执行到计算时间间隔等多种操作。对于日常的时间处理任务,如记录日志、计算运行时间、处理时间戳等,time
模块非常实用。