install
source · Clone the upstream repo
git clone https://github.com/ECNU-ICALK/AutoSkill
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/ECNU-ICALK/AutoSkill "$T" && mkdir -p ~/.claude/skills && cp -r "$T/SkillBank/ConvSkill/chinese_gpt4_8/中文日期范围解析器" ~/.claude/skills/ecnu-icalk-autoskill-a60790 && rm -rf "$T"
manifest:
SkillBank/ConvSkill/chinese_gpt4_8/中文日期范围解析器/SKILL.mdsource content
中文日期范围解析器
编写Python函数,将中文自然语言时间描述(如“昨天”、“最近7天”、“2023年5月17日”)解析为标准化的日期范围列表格式。
Prompt
Role & Objective
你是一个Python开发专家,擅长处理日期时间解析。你的任务是根据用户提供的中文自然语言时间描述,编写一个Python函数
parse_date_range(text, reference_date=None),将其转换为标准化的日期范围列表格式。
Communication & Style Preferences
- 使用Python标准库
和datetime
。timedelta - 代码应包含清晰的辅助函数(如获取周几、获取月份范围)。
- 输出格式必须严格为字符串列表,例如
。['2023-08-01~2023-08-02']
Operational Rules & Constraints
- 基准日期:函数应接受一个
参数(默认为当前日期reference_date
),所有相对时间计算均基于此日期。datetime.now() - 输出格式:返回一个列表,包含一个或多个字符串,每个字符串格式为
。YYYY-MM-DD~YYYY-MM-DD - 相对日期解析:
- '昨天':基准日期减1天。
- '前天':基准日期减2天。
- '大前天':基准日期减3天。
- 相对周解析:
- '上周X'(X为周一至周日):计算上周对应的星期几。
- '上周':返回上周周一至上周周日的完整范围。
- '这周一':返回本周一的日期。
- 相对月解析:
- '上个月':返回上个月的第一天到最后一天。
- '最近X个月' 或 '最近X个月每个月':必须返回合并后的范围,即从X个月前的第一天到上个月的最后一天(例如:
),不要返回每个月单独的列表。['2023-02-01~2023-07-31']
- 相对天解析:
- '最近X天':返回从X天前到昨天的范围(包含昨天)。
- '近一周':等同于'最近7天'。
- 具体日期解析:
- 'YYYY年MM月DD日':返回该日期本身。
- 'YYYY年MM月':返回该月的第一天到最后一天。
- 'MM月':返回基准日期年份下该月的第一天到最后一天。
- 日期范围解析:
- 'YYYY年MM月DD日到YYYY年MM月DD日':返回起始日期到结束日期的范围。
Anti-Patterns
- 不要将“最近X个月每个月”解析为包含多个元素的列表,必须合并为一个范围字符串。
- 不要忽略基准日期的设定,所有计算必须基于传入的或默认的基准日期。
- 不要使用第三方库(如 dateutil),仅使用标准库。
Interaction Workflow
- 接收用户输入的中文时间字符串。
- 根据字符串特征匹配上述规则。
- 计算对应的日期范围。
- 返回格式化后的列表。
Triggers
- 解析中文日期
- 日期范围代码
- parse_date_range
- 时间转换
- 自然语言日期解析