导读:本期聚焦于小伙伴创作的《Python如何实现精确到分钟的待办提醒功能?》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《Python如何实现精确到分钟的待办提醒功能?》有用,将其分享出去将是对创作者最好的鼓励。

待办提醒功能的核心需求是让程序在指定的分钟级时间点触发提醒,Python生态中有成熟的模块可以支撑这个需求,不需要从零实现复杂的时间逻辑。我们可以通过datetime模块处理时间解析和比对,用schedule模块实现定时任务调度,再结合系统通知接口完成提醒动作。

Python如何实现精确到分钟的待办提醒功能?

实现前的环境准备

首先需要安装必要的第三方模块,schedule模块用于简化定时任务调度,win10toast模块可以在Windows系统下发送桌面通知,如果是macOS或Linux系统可以替换为对应的系统通知库。执行以下命令安装依赖:

# 安装依赖模块
pip install schedule
pip install win10toast

核心实现步骤

1. 时间解析与校验

用户设置的提醒时间通常是字符串格式,比如"14:30",我们需要先将其转换为可比对的时间对象,同时校验时间格式是否合法:

from datetime import datetime

def parse_remind_time(time_str):
    # 校验时间格式是否为HH:MM
    try:
        remind_time = datetime.strptime(time_str, "%H:%M")
        return remind_time
    except ValueError:
        return None

2. 定时任务调度逻辑

使用schedule模块每分钟检查一次当前时间,和预设的提醒时间做比对,匹配则触发提醒:

import schedule
import time
from datetime import datetime
from win10toast import ToastNotifier

# 初始化通知器
notifier = ToastNotifier()
# 存储待办事项,格式为{提醒时间字符串: 待办内容}
todo_dict = {}

def check_remind():
    # 获取当前时间的时分部分
    current_time = datetime.now().strftime("%H:%M")
    # 如果当前时间在待办字典中,触发提醒
    if current_time in todo_dict:
        todo_content = todo_dict[current_time]
        notifier.show_toast(
            "待办提醒",
            f"您有新的待办事项:{todo_content}",
            duration=10
        )
        # 提醒后删除该待办,避免重复提醒
        del todo_dict[current_time]

# 每分钟执行一次检查
schedule.every(1).minutes.do(check_remind)

3. 主程序运行逻辑

编写主程序接收用户输入的待办内容和提醒时间,启动调度循环:

def main():
    print("Python待办提醒工具,输入q退出程序")
    while True:
        # 接收用户输入
        todo_content = input("请输入待办内容:")
        if todo_content == "q":
            break
        remind_time_str = input("请输入提醒时间(格式HH:MM,如14:30):")
        # 校验时间格式
        if parse_remind_time(remind_time_str) is None:
            print("时间格式错误,请重新输入")
            continue
        # 存入待办字典
        todo_dict[remind_time_str] = todo_content
        print(f"已添加待办:{remind_time_str} {todo_content}")

    # 启动调度循环
    print("程序已启动,正在监听待办提醒...")
    while True:
        schedule.run_pending()
        time.sleep(1)

if __name__ == "__main__":
    main()

注意事项

  • 程序运行期间不能关闭终端,否则调度任务会停止,如果需要后台运行可以结合系统服务或任务计划程序实现
  • 如果需要在多个时间点提醒,可以多次调用添加待办的流程,待办字典会自动存储多个时间点的任务
  • 时间比对使用的是本地系统时间,如果系统时间不准确会导致提醒偏差,建议确保系统时间同步
  • 非Windows系统可以替换win10toast为对应的通知库,比如macOS可以使用osascript调用系统通知接口

功能扩展方向

如果需要更强大的功能,还可以扩展以下能力:

  • 增加待办持久化,把待办数据保存到本地文件,程序重启后也能读取历史待办
  • 支持按日期设置提醒,比如"2024-05-20 14:30",扩展时间解析逻辑即可
  • 增加提醒方式,除了桌面通知还可以发送邮件、企业微信消息等

Python待办提醒时间调度schedule模块datetime模块修改时间:2026-06-02 22:48:46

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。