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
五、时间戳应用场景
- 日志记录 :用时间戳标记事件发生时间。
- 性能分析 :计算代码块执行时间。
- 缓存过期 :检查数据是否过期。
- 定时任务 :判断任务是否到执行时间。
六、核心函数总结
函数 | 作用 | 示例 |
---|---|---|
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}")
通过掌握这些基础操作,你可以轻松处理时间戳相关的编程任务! 🚀
**“每个程序员都曾是小白,写代码的乐趣在于亲手创造价值。”
—— 不要害怕犯错,调试代码的过程正是你成长的见证。**