# ChatGPT 生成ICS日历：跨夏令时排六周课程，只取消和改期各一次

原6次取消11月3日后剩5次，11月10日原实例移到12日不增数量。纽约18:00在10月对应上海次日06:00，11月对应07:00；未写入云端日历。

## 文件身份

所有人物、组织、数值为原创虚构教学资料。作者本地原生参考不代表目标SaaS实测；本题未登录目标账号、购买权益、调用付费API、发送评论/邀请或写主日历。

## 七步操作

1. 固定纽约本地时间与上海显示

把六周课表和America/New_York时区交给AI，明确上海只用于显示转换，课程时间固定纽约18:00。

2. 生成UID、时区和六次重复

要求生成稳定UID、RRULE、VTIMEZONE和完整起止时间，不用固定UTC偏移代替时区。

3. 取消一次并覆盖一个原实例

用EXDATE排除11/03，再用同UID与原11/10 RECURRENCE-ID建立11/12覆盖实例。

4. 展开有效实例检查总数

展开六周实例，取消后应5次，改期不增加总数；列纽约、UTC和上海三列。

5. 核对夏令时前后的06点与07点

核对10月实例上海次日06:00，11月实例次日07:00，不手工把所有课都移一小时。

6. 仅在独立练习副本导入

在自己的独立练习日历导入ICS，打开首末及改期实例核查，禁止邀请收件人或写主日历。

7. 保存文本、展开清单与实际证据

保存ICS、展开清单与实际导入截图，记录重复导入可能产生的客户端差异。

## 独立验证

在复制的目录运行 `python3 -B verify.py`。需要Python3，PDF验证依赖pypdf、原生表格只读检查依赖openpyxl，文档用标准库读取OOXML。教材的本地HTML查看器直接在浏览器打开，不需要连接第三方服务。

## 原生文件

- course-reference.ics

## 验收

- 原6次减1次为5次；11/10原实例不存在、11/12恰有一条，UID/RECURRENCE-ID一致。
- DST前后纽约18:00不变、上海显示从06:00变07:00，时区与日期进位都正确。
- ICS文本可解析且有真实导入核对；作者展开结果不冒充云端写入回执。

## 账户与功能依据

- OpenAI：Data analysis with ChatGPT https://help.openai.com/en/articles/8437071-data-analysis-with-chatgpt
- IETF RFC 5545：iCalendar https://www.rfc-editor.org/rfc/rfc5545.html
- Google Calendar：导入 ICS/CSV https://support.google.com/calendar/answer/37118
