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

如何实现判断指定日期是否在当前日期的一周范围内?

修正判断指定日期是否在当前一周范围内的Python代码

嘿,我看了你这段代码,逻辑确实跑偏了,咱们一步步来梳理问题并修正它~

原代码的核心问题

  • 你错误地用当前日期减去了指定日期的日部分数值(比如date='2018-04-01'就减了1天),这完全不是判断“一周范围”的逻辑
  • 后续把日期对象转成字符串再截取字符判断等于'07'的操作,也完全不符合日期差的判断逻辑

修正后的代码逻辑

要判断指定日期是否在当前日期的一周范围内,我们需要:

  1. 获取仅保留日期部分的当前日期(去掉时分秒,避免干扰)
  2. 将指定的日期字符串转换为datetime日期对象
  3. 计算两个日期之间的天数差,取绝对值
  4. 判断天数差是否小于等于7,若是则处于一周范围内,再执行邮件发送操作

完整修正代码

from datetime import datetime, timedelta
import yagmail

# 获取当前日期(仅保留年月日,去掉时分秒)
curr_date = datetime.now().date()

# 指定需要判断的日期
target_date_str = '2018-04-01'
# 将字符串转换为date对象
target_date = datetime.strptime(target_date_str, '%Y-%m-%d').date()

# 计算两个日期的天数差(取绝对值,避免顺序影响)
days_diff = abs((curr_date - target_date).days)

# 判断是否在一周范围内(<=7天)
if days_diff <= 7:
    print("指定日期处于当前日期的一周范围内")
    # 执行邮件发送逻辑
    try:
        yag = yagmail.SMTP("#########@gmail.com", "######")
        content = ['这里填写你的邮件内容']
        yag.send(to="收件人邮箱@xxx.com", subject="日期提醒", contents=content)
        print("邮件发送成功")
    except Exception as e:
        print(f"邮件发送失败: {e}")
else:
    print("指定日期不在当前日期的一周范围内")

代码说明

  • 使用date()方法获取纯日期对象,避免时分秒导致的计算误差
  • 通过abs((curr_date - target_date).days)获取两个日期的绝对天数差,不管指定日期在当前日期之前还是之后都能正确判断
  • 加入了异常捕获,避免邮件发送过程中出错导致程序崩溃

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:01:14