Skip to content

Null993/HolidayCountdown

Repository files navigation

📅 HolidayCountdown

一个支持智能假期解析、自动 ICS 缓存、本地下班倒计时的桌面工具(PyQt6)

预览

轻量级桌面工具,能够自动获取中国节假日 ICS 数据,并展示:

  • 各假期的总天数
  • 排除调休后的实际放假天数
  • 排除调休与周末后的真实休息天数
  • 中午与晚上两段下班倒计时
  • 可选置顶、锁定窗口、透明度调节
  • 本地 ICS 缓存,离线仍可正常使用

项目使用 PyQt6 开发,支持 Windows 10、11(其它平台理论可运行但未测试)。


🙏 数据来源(Credit)

本项目使用中国法定节假日 ICS 数据,来源:

📌 https://github.com/lanceliao/china-holiday-calender

感谢该项目长期维护官方节假日数据。


✨ 功能特点

✅ 假期展示功能

  • 自动从远程下载最新 ICS 文件
  • 离线自动读取本地缓存
  • 按时间顺序显示假期
  • 每条假期展示:
    • 假期名称
    • 日期范围
    • 总天数
    • 排除调休后的天数
    • 排除调休与周末后的真实休息天数

🧠 智能 ICS 解析

  • 自动识别调休补班
  • 解析错误会切至安全模式,保证稳定性

⏰ 双段下班倒计时

下班时间 倒计时
中午(默认 12:00) 中午下班倒计时
晚上(默认 18:00) 晚上下班倒计时

可自定义并自动保存。

🪟 实用桌面功能

  • 置顶
  • 锁定窗口防大小更改
  • 透明度滑条

📦 配置自动保存

写入 config.json,包括:

  • ICS 网址
  • 中午 / 晚上下班时间
  • 自动刷新间隔
  • 是否启用智能计算

💾 本地 ICS 缓存

  • 首次联网成功后落地到 holiday_data.ics
  • 下次启动自动读取
  • 无网仍可正常使用

📥 安装方法

✔ 方法一:运行源码

需要 Python 3.11:

pip install -r requirements.txt
python main.py

✔ 方法二:使用 Release 的 EXE 安装包

在 GitHub Release 页面下载即可运行。


📁 项目结构

HolidayCountdown/
├─ ui/
│  ├─ main_window.py        # 主界面
│  ├─ widgets/              # 自定义组件
├─ holidays/
│  ├─ fetcher.py            # ICS 下载与缓存
│  ├─ parser.py             # ICS 解析
│  ├─ processor.py          # 假期处理逻辑
│  ├─ scheduler.py          # 下班倒计时
├─ main.py                  # 程序入口
├─ requirements.txt
├─ holiday_data.ics         # 本地 ICS 缓存(自动生成)
└─ config.json              # 用户配置(自动生成)

📝 使用说明

  1. 启动后自动加载节假日

  2. 可访问网络 → 获取最新 ICS

  3. 离线 → 自动读取缓存

  4. 下班时间支持直接修改并实时保存

  5. 右上角按钮可切换:

    • 📌 置顶
    • 🔒 锁定窗口
    • 🌫 透明度调节

📜 License

本项目采用 CC BY-NC 4.0 协议发布。

About

Windows/Android平台下的假期倒计时

Resources

Stars

Watchers

Forks

Packages

No packages published