Python中时间操作time怎么用

发布时间:2021-11-30 12:50:10 作者:小新
来源:亿速云 阅读:167
# Python中时间操作time怎么用

## 目录
1. [time模块概述](#time模块概述)
2. [时间戳操作](#时间戳操作)
3. [时间格式化](#时间格式化)
4. [结构化时间](#结构化时间)
5. [延时与计时](#延时与计时)
6. [性能测量](#性能测量)
7. [时区处理](#时区处理)
8. [常见问题与解决方案](#常见问题与解决方案)
9. [总结](#总结)

---

## time模块概述
Python的`time`模块是处理时间相关操作的核心模块之一,提供了各种时间相关的函数。该模块主要包含三类时间表示形式:
- **时间戳(Timestamp)**:从1970年1月1日00:00:00开始的秒数(浮点数)
- **结构化时间(struct_time)**:包含9个元素的元组
- **格式化时间(Formatted String)**:可读的字符串形式

```python
import time

时间戳操作

获取当前时间戳

current_timestamp = time.time()
print(f"当前时间戳: {current_timestamp}")
# 输出示例: 1689987600.123456

时间戳转换

# 时间戳 → 结构化时间
local_struct = time.localtime(current_timestamp)
gm_struct = time.gmtime(current_timestamp)

# 结构化时间 → 时间戳
new_timestamp = time.mktime(local_struct)

时间格式化

时间转字符串

# 默认格式
formatted_time = time.ctime(current_timestamp)
# 输出: "Mon Jul 24 15:30:00 2023"

# 自定义格式
custom_format = time.strftime("%Y-%m-%d %H:%M:%S", local_struct)
# 输出: "2023-07-24 15:30:00"

字符串转时间

time_str = "2023-07-24"
parsed_struct = time.strptime(time_str, "%Y-%m-%d")

常用格式符号

符号 含义 示例
%Y 四位年份 2023
%m 月份(01-12) 07
%d 日期(01-31) 24
%H 24小时制小时 15
%M 分钟(00-59) 30
%S 秒(00-59) 45
%A 星期全名 Monday

结构化时间

struct_time对象的9个属性:

time.struct_time(
    tm_year=2023,   # 年
    tm_mon=7,       # 月
    tm_mday=24,     # 日
    tm_hour=15,     # 时
    tm_min=30,      # 分
    tm_sec=45,      # 秒
    tm_wday=0,      # 星期(0-6)
    tm_yday=205,    # 一年中的第几天
    tm_isdst=0      # 夏令时标志
)

获取各时间分量

year = local_struct.tm_year
hour = local_struct.tm_hour

延时与计时

简单延时

print("开始执行")
time.sleep(2.5)  # 暂停2.5秒
print("延迟结束")

精确计时

start = time.perf_counter()  # 高精度计时器
# 执行代码...
end = time.perf_counter()
print(f"耗时: {end - start:.4f}秒")

性能测量

比较不同实现

def test_func():
    time.sleep(0.1)

# 方法1: time.time()
start = time.time()
test_func()
print(f"time.time(): {time.time() - start:.6f}")

# 方法2: time.perf_counter()
start = time.perf_counter()
test_func()
print(f"perf_counter: {time.perf_counter() - start:.6f}")

时区处理

虽然time模块原生不支持时区,但可以结合其他模块处理:

import time
from datetime import datetime, timezone

# 获取UTC时间
utc_time = time.gmtime()
print(time.strftime("%Y-%m-%d %H:%M:%S UTC", utc_time))

# 本地时区转换
local_time = time.localtime()
print(time.strftime("%Y-%m-%d %H:%M:%S %Z", local_time))

常见问题与解决方案

问题1:时间戳精度差异

# Windows系统默认精度约15ms
timestamp = time.time()  # 可能返回1689987600.123

# 解决方案:使用perf_counter
high_res = time.perf_counter()

问题2:跨平台休眠精度

# 不同系统sleep精度不同
time.sleep(0.001)  # 实际可能休眠更长时间

# 替代方案:busy waiting(仅适用于极短延时)
def precise_sleep(duration):
    end = time.perf_counter() + duration
    while time.perf_counter() < end:
        pass

问题3:时区混淆

# 错误示例:直接比较不同时区时间
utc_time = time.gmtime()
local_time = time.localtime()

# 正确做法:统一转换为UTC比较
utc_timestamp = time.mktime(utc_time) - time.timezone
local_timestamp = time.mktime(local_time)

总结

  1. 核心功能

    • 时间戳:time.time()
    • 格式化:strftime()/strptime()
    • 结构化时间:localtime()/gmtime()
  2. 性能工具

    • 普通计时:time.time()
    • 高精度计时:time.perf_counter()
    • 进程时间:time.process_time()
  3. 最佳实践

    • 需要时区处理时建议使用datetime模块
    • 关键性能测量使用perf_counter
    • 长时间延时考虑使用signal.alarm

完整代码示例见下方:

import time

def time_operations_demo():
    # 获取当前时间
    now = time.time()
    print(f"Timestamp: {now}")
    
    # 转换为本地时间
    local = time.localtime(now)
    print(f"Local struct: {local}")
    
    # 格式化输出
    formatted = time.strftime("%Y-%m-%d %H:%M:%S", local)
    print(f"Formatted: {formatted}")
    
    # 计时示例
    start = time.perf_counter()
    time.sleep(0.5)
    duration = time.perf_counter() - start
    print(f"Slept for: {duration:.6f} seconds")

time_operations_demo()

通过掌握这些核心功能,您已经能够处理Python中大多数时间相关的操作需求。 “`

推荐阅读:
  1. python中time与datetime模块怎么用
  2. linux中time()函数怎么用

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

python time

上一篇:Pygame中Font模块怎么用

下一篇:C/C++ Qt TreeWidget单层树形组件怎么应用

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》