一个功能丰富的终端日期提醒工具,支持公历/农历事件管理、日出日落时间显示和每日文案功能。
- 📅 事件管理:支持生日、节日等重要日期提醒
- 🌙 农历支持:完美支持农历日期转换
- ☀️ 日出日落:根据地理位置显示日出日落时间
- 📜 每日文案:随机展示激励文案,支持时间/次数模式更新
- 🎨 彩色输出:美观的终端彩色显示
- ⚙️ 灵活配置:JSON 配置文件,易于管理
# 克隆仓库
git clone <repository-url>
cd <project-directory>
# 安装依赖
go mod tidy
# 编译
go build -o app main.go{
"datesFile": "dates.json",
"sentencesFile": "sentences.json",
"showDateAmount": 7,
"dateFormat": "2006/01/02",
"location": {
"latitude": 39.9042,
"longitude": 116.4074,
"timezone": 8
},
"showSunTimes": true,
"showDailySentence": true,
"cacheDir": "cache",
"sentenceUpdateMode": "count",
"sentenceUpdateInterval": 5
}配置说明:
datesFile: 事件数据文件路径sentencesFile: 文案数据文件路径showDateAmount: 显示最近的事件数量(默认 7)dateFormat: 日期显示格式location: 地理位置信息latitude: 纬度longitude: 经度timezone: 时区(UTC 偏移小时数)
showSunTimes: 是否显示日出日落时间showDailySentence: 是否显示每日文案cacheDir: 缓存目录sentenceUpdateMode: 文案更新模式time: 基于时间更新(单位:小时)count: 基于运行次数更新
sentenceUpdateInterval: 更新间隔值
{
"events": [
{
"name": "春节",
"type": "festival",
"month": 1,
"day": 1,
"repeatYearly": true,
"alwaysShow": true,
"isLunar": true
},
{
"name": "小明生日",
"type": "birthday",
"year": 2025,
"month": 5,
"day": 20,
"repeatYearly": true,
"alwaysShow": false,
"isLunar": false
}
]
}字段说明:
name: 事件名称type: 事件类型(birthday或festival)year: 年份(仅在不重复时需要)month: 月份day: 日期repeatYearly: 是否每年重复alwaysShow: 是否始终显示(不受showDateAmount限制)isLunar: 是否使用农历
{
"sentences": [
"今天也要加油哦!",
"生活明朗,万物可爱。",
"星光不问赶路人,时光不负有心人。",
"愿你走出半生,归来仍是少年。"
]
}# 使用当前目录的配置文件
./app
# 指定配置目录
./app -config /path/to/config交互式添加(推荐):
# 完全交互式
./app -add-event
# 指定事件名称,其余交互输入
./app -add-event 春节交互流程示例:
=== 添加新事件 ===
事件名称: 春节
事件类型 (birthday/festival) [festival]: festival
使用农历 (y/n) [n]: y
每年重复 (y/n) [y]: y
请输入日期 (月 日,如: 1 1): 1 1
始终显示 (y/n) [n]: y
事件信息:
名称: 春节
类型: festival
历法: 农历
日期: 每年 1月1日
始终显示: true
确认添加? (y/n) [y]: y
✓ 成功添加事件: 春节
./app -add-sentence "你的新文案内容"# 手动刷新当前显示的文案
./app -refresh-sentence# 开启/关闭日出日落显示
./app -show-sun-times true
./app -show-sun-times false
# 开启/关闭每日文案
./app -show-daily-sentence true
./app -show-daily-sentence false
# 设置显示事件数量
./app -show-date-amount 10./app -hHello World!
📜 今天也要加油哦!
☀️ 距离这次日落还有 3小时45分钟
🎂 小明生日 还有 15 天 (2025/05/20)
🎉 春节 还有 120 天 (2026/01/29)
🎉 中秋节 还有 200 天 (2025/10/06)
根据时间间隔自动更新文案:
{
"sentenceUpdateMode": "time",
"sentenceUpdateInterval": 24
}上述配置表示每 24 小时更新一次文案。
根据运行次数更新文案:
{
"sentenceUpdateMode": "count",
"sentenceUpdateInterval": 5
}上述配置表示每运行 5 次程序更新一次文案。
- 标记为
alwaysShow: true的事件始终显示 - 其余事件按时间从近到远排序
- 最多显示
showDateAmount个事件 - 已过去的事件显示负数天数
- 根据配置的经纬度和时区自动计算
- 显示距离最近的日出或日落时间
- 自动判断"这次"或"下次"
require (
github.com/Lofanmi/chinese-calendar-golang/calendar
github.com/fatih/color
github.com/spf13/viper
github.com/starainrt/astro/sun
)Q: 如何设置开机自动运行?
A: 可以将程序添加到系统的启动脚本或使用定时任务。
Linux/Mac (添加到 ~/.bashrc 或 ~/.zshrc):
/path/to/app -config /path/to/configWindows (添加到启动文件夹或任务计划程序):
C:\path\to\app.exe -config C:\path\to\config
Q: 文案一直不更新?
A:
- 检查
sentenceUpdateMode配置是否正确 - 计数模式下需要运行足够次数
- 可以使用
-refresh-sentence手动刷新
Q: 农历日期不准确?
A: 程序使用专业的农历转换库,如有问题请检查日期输入格式是否正确。
MIT
欢迎提交 Issue 和 Pull Request!
ABloom25