目录

Python时间戳基础用法详解

Python时间戳基础用法详解

时间戳(Timestamp)是计算机中表示时间的常用方式,通常指自 协调世界时(UTC)1970年1月1日0时0分0秒(Unix纪元) 起经过的秒数(或毫秒/微秒)。以下是时间戳的核心操作和示例:


一、获取时间戳

1. 当前时间戳(秒级)

使用 time.time() 返回浮点数(秒 + 小数部分为微秒):

import time

current_ts = time.time()
print(current_ts)  # 输出:1690200000.123456 (示例值)
2. 当前时间戳(毫秒级)

将秒转换为毫秒:

current_ts_ms = int(time.time() * 1000)
print(current_ts_ms)  # 输出:1690200000123

二、时间戳与日期互转

1. 时间戳 → 日期时间

使用 time.localtime()time.gmtime()

import time

# 将时间戳转为本地时间(结构化对象)
ts = 1690200000
local_time = time.localtime(ts)
print(local_time)
# 输出:time.struct_time(tm_year=2023, tm_mon=7, tm_mday=24, ...)

# 转为可读字符串
formatted_time = time.strftime("%Y-%m-%d %H:%M:%S", local_time)
print(formatted_time)  # 输出:2023-07-24 12:00:00
2. 日期时间 → 时间戳

使用 time.mktime()

import time

# 将日期字符串转为时间戳
date_str = "2023-07-24 12:00:00"
struct_time = time.strptime(date_str, "%Y-%m-%d %H:%M:%S")
ts = time.mktime(struct_time)
print(ts)  # 输出:1690200000.0

三、时间戳计算

1. 计算时间差

记录两个时间戳的差值:

start_ts = time.time()
time.sleep(3)  # 模拟耗时操作
end_ts = time.time()

elapsed = end_ts - start_ts
print(f"耗时:{elapsed:.2f}秒")  # 输出:耗时:3.00秒
2. 时间戳加减

对时间戳直接进行数学运算:

import time

now_ts = time.time()
future_ts = now_ts + 3600  # 1小时后
past_ts = now_ts - 1800    # 30分钟前

print("1小时后:", time.strftime("%H:%M", time.localtime(future_ts)))
print("30分钟前:", time.strftime("%H:%M", time.localtime(past_ts)))

四、格式化时间戳

1. 自定义日期格式

使用 time.strftime() 的格式符:

import time

ts = 1690200000
local_time = time.localtime(ts)

# 常用格式符
formats = {
    "日期": "%Y-%m-%d",          # 2023-07-24
    "时间": "%H:%M:%S",          # 12:00:00
    "完整": "%Y-%m-%d %H:%M:%S", # 2023-07-24 12:00:00
    "周几": "%A",                # Monday(英文)
    "月份": "%B",                # July(英文)
}

for key, fmt in formats.items():
    print(f"{key}: {time.strftime(fmt, local_time)}")
2. 时区处理

默认 time 模块使用本地时区,若需处理其他时区,建议用 datetime 模块:

from datetime import datetime, timezone

# UTC时间
utc_time = datetime.fromtimestamp(1690200000, tz=timezone.utc)
print(utc_time)  # 输出:2023-07-24 12:00:00+00:00

# 转换为东八区时间
utc_time = datetime.fromtimestamp(1690200000, tz=timezone.utc)
beijing_time = utc_time.astimezone(timezone(timedelta(hours=8)))
print(beijing_time)  # 输出:2023-07-24 20:00:00+08:00

五、时间戳应用场景

  1. 日志记录 :用时间戳标记事件发生时间。
  2. 性能分析 :计算代码块执行时间。
  3. 缓存过期 :检查数据是否过期。
  4. 定时任务 :判断任务是否到执行时间。

六、核心函数总结

函数作用示例
time.time()获取当前时间戳(秒)1690200000.123456
time.localtime(ts)时间戳转本地时间的结构化对象time.struct_time(...)
time.mktime(struct)结构化对象转时间戳1690200000.0
time.strftime(fmt, t)格式化时间为字符串"2023-07-24 12:00:00"
time.strptime(s, fmt)字符串转结构化对象time.strptime("2023-07-24", "%Y-%m-%d")

七、完整示例代码

import time
from datetime import datetime, timezone, timedelta

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

# 2. 转为可读时间
local_time = time.localtime(current_ts)
formatted_time = time.strftime("%Y-%m-%d %H:%M:%S", local_time)
print(f"格式化时间:{formatted_time}")

# 3. 计算时间差
start_ts = time.time()
time.sleep(2)
end_ts = time.time()
print(f"耗时:{end_ts - start_ts:.2f}秒")

# 4. 时区转换
utc_time = datetime.fromtimestamp(current_ts, tz=timezone.utc)
beijing_time = utc_time.astimezone(timezone(timedelta(hours=8)))
print(f"北京时间:{beijing_time}")

通过掌握这些基础操作,你可以轻松处理时间戳相关的编程任务! 🚀


**“每个程序员都曾是小白,写代码的乐趣在于亲手创造价值。”

—— 不要害怕犯错,调试代码的过程正是你成长的见证。**