在 Python 中,datetime 模块处理毫秒(微秒)的方式主要取决于你使用的具体方法和 Python 版本,以下是详细的说明和示例:

获取当前时间的毫秒部分
datetime.now() 返回包含微秒(1微秒=1/1000毫秒)的时间对象,要提取毫秒部分:
from datetime import datetime
now = datetime.now()
milliseconds = now.microsecond // 1000 # 微秒转毫秒
print(f"当前时间的毫秒部分: {milliseconds}") # 示例输出: 123
格式化字符串包含毫秒
使用 strftime() 格式化时间,但注意:
%f表示微秒(6位数字),需手动截取前3位得到毫秒:formatted_time = now.strftime("%Y-%m-%d %H:%M:%S.%f")[:-3] print(f"带毫秒的时间: {formatted_time}") # 示例输出: 2025-10-05 14:30:45.123
从字符串解析带毫秒的时间
使用 strptime() 时,需用 %f 解析微秒:
time_str = "2025-10-05 14:30:45.123"
dt = datetime.strptime(time_str, "%Y-%m-%d %H:%M:%S.%f")
print(f"解析后的时间: {dt}") # 输出: 2025-10-05 14:30:45.123000
手动设置毫秒
直接修改 microsecond 属性(注意:1毫秒=1000微秒):

dt = datetime(2025, 10, 5, 14, 30, 45, 123000) # 直接传入微秒 print(dt) # 输出: 2025-10-05 14:30:45.123000
时间戳与毫秒转换
- 时间戳转毫秒:时间戳默认是秒,乘以1000得到毫秒:
timestamp_ms = int(now.timestamp() * 1000) print(f"毫秒级时间戳: {timestamp_ms}") - 毫秒时间戳转datetime:
dt_from_ms = datetime.fromtimestamp(timestamp_ms / 1000) print(dt_from_ms)
注意事项
- Python 3.3+:
datetime原生支持微秒,毫秒需手动计算。 - 性能优化:如果频繁操作,建议使用
time.time()获取高精度时间戳(微秒级),再转换为datetime。
示例代码
from datetime import datetime
# 获取当前时间并提取毫秒
now = datetime.now()
ms = now.microsecond // 1000
print(f"当前毫秒: {ms}")
# 格式化带毫秒的时间
formatted = now.strftime("%H:%M:%S.%f")[:-3]
print(f"格式化时间: {formatted}")
# 解析带毫秒的字符串
time_str = "14:30:45.123"
dt = datetime.strptime(time_str, "%H:%M:%S.%f")
print(f"解析结果: {dt}")
通过以上方法,你可以灵活处理 datetime 中的毫秒需求。

