python-time库的详细介绍

Python 的 time 模块是处理时间相关操作的核心库,提供了时间获取、格式转换、延时执行和性能计时等功能。以下是其核心内容及常用函数的详细说明:

一、时间表示形式

time 模块操作的时间主要有三种表示形式:

  1. 时间戳(Timestamp)​

    • 从 ​Epoch(1970-01-01 00:00:00 UTC)​​ 到当前时刻的秒数(浮点数)。
    • 示例:1680000000.123456
  2. 结构化时间(struct_time)​

    • 包含 9 个属性的元组,用于直观表示时间(如年、月、日等)。
    • 示例:tm_year=2023, tm_mon=3, tm_mday=28, tm_hour=15, tm_min=30, tm_sec=45, tm_wday=1, tm_yday=87, tm_isdst=0
  3. 格式化字符串(Formatted String)​

    • 按照指定格式(如 %Y-%m-%d %H:%M:%S)展示的时间字符串。
    • 示例:"2023-03-28 15:30:45"

二、核心函数分类

1. 时间获取
函数功能示例
time.time()返回当前时间戳(浮点数,精确到微秒)timestamp = time.time() # 1680000000.123456
time.localtime([secs])将时间戳转换为本地时间的 struct_time 对象(不传参则用当前时间)local_time = time.localtime(1680000000)
time.gmtime([secs])将时间戳转换为UTC时间的 struct_time 对象utc_time = time.gmtime(1680000000)
time.ctime([secs])将时间戳转换为可读字符串(如 "Tue Mar 28 15:30:45 2023"print(time.ctime()) # "Tue Mar 28 15:30:45 2023"

 2. 时间格式转换

函数功能示例
time.strftime(format, t)将 struct_time 对象转换为格式化字符串python<br>t = time.localtime()<br>s = time.strftime("%Y-%m-%d", t) # "2023-03-28"
time.strptime(string, format)将格式化字符串解析为 struct_time 对象python<br>s = "2023-03-28"<br>t = time.strptime(s, "%Y-%m-%d")
time.mktime(t)将本地时间的 struct_time 转换为时间戳timestamp = time.mktime(t)
time.asctime([t])将 struct_time 转换为可读字符串(同 ctime,默认用当前时间)print(time.asctime()) # "Tue Mar 28 15:30:45 2023"

 3. 延时与计时

函数功能示例
time.sleep(secs)暂停程序执行指定秒数(支持浮点数,如 0.5 秒)time.sleep(2.5) # 暂停2.5秒
time.perf_counter()返回高精度计时器值(用于测量短时间间隔,包含睡眠时间)python<br>start = time.perf_counter()<br># 执行代码...<br>end = time.perf_counter()<br>print(f"耗时:{end - start:.6f}秒")
time.process_time()返回当前进程的CPU时间(不包含睡眠时间,适合性能分析)用法同 perf_counter,但仅计算CPU时间。

 4. 其他实用函数

函数功能示例
time.timezone本地时区与UTC的偏移秒数(西时区为负,东时区为正)print(time.timezone) # -28800(UTC+8)
time.tzname包含本地时区名称的元组(标准时区和夏令时时区)print(time.tzname) # ('CST', 'CST')

 三、时间格式化符号

符号含义示例
%Y四位数的年份2023
%m两位数的月份(01-12)03
%d两位数的日期(01-31)28
%H24小时制的小时(00-23)15
%M分钟(00-59)30
%S秒(00-59)45
%A完整的星期名称Tuesday
%a简写的星期名称Tue
%B完整的月份名称March
%b简写的月份名称Mar
%c本地日期和时间表示Tue Mar 28 15:30:45 2023
%Z时区名称CST

四、示例代码

1. 获取并格式化当前时间
import time

# 获取当前时间戳
timestamp = time.time()
print(f"时间戳:{timestamp}")

# 转换为结构化时间
struct_time = time.localtime(timestamp)
print(f"结构化时间:{struct_time.tm_year}-{struct_time.tm_mon}-{struct_time.tm_mday}")

# 格式化为字符串
formatted = time.strftime("%Y-%m-%d %H:%M:%S", struct_time)
print(f"格式化时间:{formatted}")

 2. 计算代码执行时间

start = time.perf_counter()

# 模拟耗时操作
time.sleep(1.5)

end = time.perf_counter()
print(f"耗时:{end - start:.2f}秒")  # 输出:耗时:1.50秒

 3. 解析字符串为时间对象

date_str = "2023-03-28"
parsed_time = time.strptime(date_str, "%Y-%m-%d")
print(f"解析后的月份:{parsed_time.tm_mon}")  # 输出:3

五、注意事项

  1. 时区处理

    • time 模块默认使用操作系统的时区设置,跨时区应用建议使用 datetime 模块或第三方库(如 pytz)。
  2. 性能计时选择

    • 短时间测量用 perf_counter,进程CPU时间用 process_time,避免使用已弃用的 clock()
  3. 浮点数精度

    • 时间戳和 sleep() 支持微秒级精度,但实际精度依赖操作系统。

通过灵活组合这些函数,可以高效处理时间戳转换、任务调度、性能分析等场景。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值