python3时间datetime如何转换成数字?

使用timestamp()方法可将datetime对象转换为秒级时间戳,如now.timestamp()输出浮点数;2. 用int()转换为整数秒;3. 乘以1000并取整得毫秒级时间戳;4. 推荐使用带时区的datetime(如timezone.utc)避免时区错误;5. 字符串时间可先用strptime解析再转时间戳。核心是时间转数字即转时间戳,注意时区与精度。

在 Python3 中,将 datetime 对象转换成数字,通常是指将其转换为时间戳(timestamp)—— 即从 1970年1月1日00:00:00 UTC 到该时间点的秒数(或毫秒数)。这是最常见的“时间转数字”方式。

1. 使用 timestamp() 方法转换为秒级时间戳

Python 的 datetime 模块提供了 timestamp() 方法,可以直接将本地 datetime 对象转换为浮点型的时间戳(单位:秒)。

from datetime import datetime

示例:当前时间

now = datetime.now() timestamp_sec = now.timestamp() print(timestamp_sec) # 输出类似:1712345678.123456

2. 转换为整数(去掉小数部分)

如果只需要整数秒,可以使用 int() 强制转换:

timestamp_int = int(now.timestamp())
print(timestamp_int)  # 输出类似:1712345678

3. 转换为毫秒级时间戳

若需要更高精度(如用于前端 JS 或数据库),可乘以 1000 并转为整数:

timestamp_ms = int(now.timestamp() * 1000)
print(timestamp_ms)  # 输出类似:1712345678123

4. 处理时区问题(推荐使用带时区的 datetime)

如果 datetime 对象没有时区信息,timestamp() 会按本地时区处理,容易出错。建议使用带时区的时间对象:

from datetime import datetime, timezone

获取当前 UTC 时间并带上时区

utc_now = datetime.now(timezone.utc) timestamp_utc = utc_now.timestamp() print(timestamp_utc)

5. 将字符串时间转为数字时间戳

先用 strptime() 解析字符串为 datetime,再转时间戳:

time_str = "2025-04-05 12:30:45"
dt = datetime.strptime(time_str, "%Y-%m-%d %H:%M:%S")
timestamp = int(dt.timestamp())
print(timestamp)

基本上就这些常见用法。核心是理解:时间转数字 = 转时间戳,用 datetime.timestamp() 最直接。注意时区和精度即可。不复杂但容易忽略细节。