🕒 时间模块不是用来看时间的,是用来统治时间的! 今天我们来实战
time
、datetime
、schedule
,打造一个自动提醒系统。
✅ 本文目标
- 掌握
time
与datetime
的使用方式与差异 - 理解格式化时间字符串
- 编写一个定时提醒脚本(支持间隔/指定时间执行)
- 实战构建“番茄工作法”提醒工具
🧠 一、time 模块:基础时间戳与睡眠控制
import time
print(time.time()) # 当前时间戳(秒)
print(time.ctime()) # 字符串时间:Mon Jul 1 10:23:45 2025
print(time.localtime()) # 时间元组
✅ 延迟执行:sleep
print("3秒后执行")
time.sleep(3)
print("到了!")
📅 二、datetime 模块:更强大的日期处理工具
from datetime import datetime, timedelta
now = datetime.now()
print(now)
# 获取今天、昨天、明天
today = datetime.today()
yesterday = today - timedelta(days=1)
tomorrow = today + timedelta(days=1)
🎯 格式化时间输出
print(now.strftime("%Y-%m-%d %H:%M:%S")) # 2025-07-02 11:35:42
⌛ 字符串转时间对象
dt = datetime.strptime("2025-07-01 09:00:00", "%Y-%m-%d %H:%M:%S")
🔁 三、schedule 模块:人类可读的定时器神器
pip install schedule
import schedule
import time
def job():
print("🔔 每5秒执行一次")
schedule.every(5).seconds.do(job)
while True:
schedule.run_pending()
time.sleep(1)
🧪 实战:番茄工作法提醒器(25分钟专注 + 5分钟休息)
def focus():
print("🍅 开始专注25分钟...")
time.sleep(25 * 60)
print("🔔 休息5分钟!")
time.sleep(5 * 60)
schedule.every().hour.at(":00").do(focus)
print("番茄工作法提醒器启动中...")
while True:
schedule.run_pending()
time.sleep(1)
如果调试阶段,可将
25 * 60
改成10
秒,快速测试。
📥 BONUS:每天固定时间提醒 + 多任务调度
def morning_reminder():
print("🌞 早安!记得喝水 + 读10页书")
def evening_check():
print("🌙 今天完成任务了吗?准备睡觉吧")
schedule.every().day.at("08:00").do(morning_reminder)
schedule.every().day.at("22:30").do(evening_check)
📦 项目封装建议
- 使用
threading.Thread
让提醒在后台执行 - 将提醒内容放入配置文件(如 JSON / YAML)
- 用日志记录提醒触发历史
💡 拓展挑战
- 加入微信/钉钉 API 实现自动消息推送
- 用 GUI(如
tkinter
)做一个“桌面版提醒器” - 编写“生日提醒器”、“账单到期提醒器”等功能
🧠 总结一句话
时间模块不是用来看时间,而是让你的代码学会掌控时间、触发行为、实现自动化。