Python 中如何获取当前时间?
Python 获取当前时间的两种主要方式:datetime.now()(推荐,功能全)和 time 模块。本文介绍格式化输出、时间戳获取和时区处理。
最常用的方式:datetime.now() 得到当前日期时间对象,再用 strftime() 格式化输出。只需要时间戳时用 time.time()。
方法一:datetime 模块(推荐)
from datetime import datetime
now = datetime.now()
print(now) # 2024-01-15 10:30:45.123456
print(now.strftime("%H:%M:%S")) # 10:30:45
print(now.strftime("%Y-%m-%d %H:%M:%S")) # 2024-01-15 10:30:45
strftime 常用格式符:%Y 年、%m 月、%d 日、%H 时(24小时)、%M 分、%S 秒。
方法二:time 模块
import time
t = time.localtime()
print(time.strftime("%H:%M:%S", t)) # 10:30:45
print(time.time()) # 1705287045.123(Unix 时间戳)
time.time() 返回秒级时间戳,做计时、存储时间时最方便。
时区处理
datetime.now() 返回的是本地时区的"朴素"时间。需要带时区信息(推荐生产环境使用):
from datetime import datetime, timezone
now = datetime.now(timezone.utc) # UTC 时间
print(now.isoformat()) # 2024-01-15T02:30:45+00:00
存储和传输时间建议统一用 UTC 或时间戳,展示时再转本地时区。
常见问题(FAQ)
Q:now() 和 today() 有区别吗?
A:datetime.now() 和 datetime.today() 基本等价,都返回本地当前时间;now(tz) 可以指定时区,更灵活。
Q:如何获取毫秒/微秒?
A:now().microsecond 取微秒部分;毫秒可以 int(time.time() * 1000)。
Q:日志里的时间应该用哪种?
A:建议 ISO 8601 格式(now.isoformat())或 Unix 时间戳,机器可读性好,日志平台(包括观测云)都能自动解析。