You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Python datetime比较不同精度的Timestamp并仅对比至秒级?

忽略毫秒精度比较ISO时间戳(仅匹配到秒级)

针对你遇到的不同精度ISO时间戳比较问题,这里提供两种简单可行的实现方式,都能只对比日期、小时、分钟、秒部分:

方法1:直接截取字符串(简单高效)

标准ISO 8601格式的时间戳,到秒的部分刚好是前19个字符(格式为YYYY-MM-DDTHH:MM:SS),直接截取这部分做比较即可:

target_ts = "2023-09-09T04:18:22.676Z"
ts_list = ["2023-09-09T04:18:22.676095594Z", "2023-09-09T04:18:23.123Z", "2023-09-09T04:18:22.456Z"]
matched = []

# 提取目标时间的秒级部分
target_second_part = target_ts[:19]

for ts in ts_list:
    # 截取当前时间的秒级片段后对比
    if ts[:19] == target_second_part:
        matched.append(ts)

print(matched)
# 输出结果: ['2023-09-09T04:18:22.676095594Z', '2023-09-09T04:18:22.456Z']

方法2:用datetime解析(兼容性更强)

如果你的时间戳可能存在格式变体(比如时区不是Z而是+08:00这类),用datetime模块解析后截断微秒再对比更稳妥:

from datetime import datetime

target_ts = "2023-09-09T04:18:22.676Z"
ts_list = ["2023-09-09T04:18:22.676095594Z", "2023-09-09T04:18:23.123Z", "2023-09-09T04:18:22.456Z"]
matched = []

# 解析目标时间并移除微秒部分
target_dt = datetime.fromisoformat(target_ts.replace("Z", "+00:00")).replace(microsecond=0)

for ts in ts_list:
    # 解析当前时间并截断到秒
    current_dt = datetime.fromisoformat(ts.replace("Z", "+00:00")).replace(microsecond=0)
    if current_dt == target_dt:
        matched.append(ts)

print(matched)
# 输出结果: ['2023-09-09T04:18:22.676095594Z', '2023-09-09T04:18:22.456Z']

两种方法对比

  • 字符串截取:代码简洁,运行速度快,适合确定输入是标准Z时区ISO格式的场景。
  • datetime解析:能兼容更多时间格式和时区,容错性更强,推荐在输入格式不确定时使用。

内容的提问来源于stack exchange,提问作者Linuxnoob

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 23:18:33