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

Python中date.today()与datetime类型时间比较触发警告的问题

问题根因

你的判断是正确的:date.today() 返回值为 datetime.date 类型(仅存储年、月、日信息,不含时分秒),而你代码中的R_timer是pandas Timestamp类型(或datetime.datetime类型,包含完整年月日时分秒信息)。pandas新版本为了对齐Python标准库的类型校验逻辑,已经弃用了这两种跨时间类型的直接比较,后续版本会直接判定二者类型不匹配无法比较,因此弹出对应警告。

可直接复用的修复写法
  • 写法1:按警告提示,将date对象转为pandas时间戳后再比较,不会丢失时间精度
import pandas as pd
from datetime import date

R_timer = pd.Timestamp("2021-12-07 00:00:00")
if pd.Timestamp(date.today()) >= R_timer:
    print('1')
  • 写法2:将Timestamp类型的时间变量转为date类型后比较,该写法会丢弃R_timer的时分秒部分,仅按年月日做判断
from datetime import date

R_timer = pd.Timestamp("2021-12-07 00:00:00")
if date.today() >= R_timer.date():
    print('1')
  • 写法3:如果业务逻辑需要对比精确到时分秒的时间,直接用datetime.today()获取和R_timer同结构的datetime对象,从根源避免类型不匹配问题
from datetime import datetime

# R_timer如果是原生datetime格式可以直接用这个写法
R_timer = datetime(2021, 12, 7, 0, 0, 0)
if datetime.today() >= R_timer:
    print('1')
避坑提示

日常写时间相关逻辑时,尽量保证比较运算符两侧的时间类型完全一致,不要混用datetime.date、datetime.datetime、pd.Timestamp三类对象。旧版本pandas对跨类型比较做了隐式转换,看似能正常运行,实际可能存在时分秒精度丢失、时区不匹配的隐性bug,版本升级后还会直接抛出类型错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 23:57:19