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

如何解决Python中Excel提取日期与输入日期的匹配失效问题?

问题:datetime与date类型不匹配导致条件判断失效

问题描述

第一次使用datetime库遇到问题:

  • 输入值date_str通过strptime转换为datetime.date类型
  • 从Excel文件提取的date是datetime.datetime类型(包含时分秒信息)
  • 由于类型不匹配,if date == new_date语句无法生效,同时希望提取日期时能去除时分秒信息。

相关代码

def read_file(filename):
   wb = openpyxl.load_workbook(filename)
   sheet = wb.active
   data = []

   for row in sheet.iter_rows(min_row=2, values_only=True):
       data.append(row)

   return data

def main():
   filename = input("Enter file name: ")
   data = read_file(filename)

   date_str = input("Enter date YYYY-MM-DD: ")
   new_date = datetime.strptime(date_str, "%Y-%m-%d").date()

   for date in data:
      if date == new_date:
          print(f"Date: {date}")

解决方案

方法1:字符串匹配(提问者自行解决的方法)

保留用户输入的字符串格式,将从文件提取的datetime对象转换为指定格式的字符串进行匹配:

date_str = input("Enter date YYYY-MM-DD: ")

for date in data:
    if date.strftime("%Y-%m-%d") == date_str:
        print(f"Date: {date}")

方法2:统一转换为date类型

将从文件提取的datetime对象转换为date类型,和用户输入转换后的date对象直接比较:

date_str = input("Enter date YYYY-MM-DD: ")
new_date = datetime.strptime(date_str, "%Y-%m-%d").date()

for date in data:
    # 将datetime转换为date类型
    if date.date() == new_date:
        print(f"Date: {date}")

方法3:读取文件时直接转换为date类型

在读取Excel文件的阶段,就把提取到的datetime对象转换为date类型,后续无需额外处理:

def read_file(filename):
   wb = openpyxl.load_workbook(filename)
   sheet = wb.active
   data = []

   for row in sheet.iter_rows(min_row=2, values_only=True):
       # 假设每行第一个元素是日期,转换为date类型
       converted_row = (row[0].date(),) + row[1:] if row else row
       data.append(converted_row)

   return data

处理后后续的if date == new_date判断即可直接生效。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 21:47:18