关于 dotnet-timezone
面向 .NET 和 C# 开发者的时区处理技能,提供实现建议和可直接使用的代码模式。内容涵盖时区 ID 查询、转换、跨平台兼容及夏令时排程问题。
主要功能
- 01映射 Windows 与 IANA 时区 ID
- 02根据地点查找时区 ID
- 03生成 C# 转换代码片段
- 04按平台需求选择库
- 05处理夏令时排程边界情况
- 06提示存储与 API 常见问题
适用场景
- 01将 UTC 转换为地点本地时间
- 02实现跨平台时区处理
- 03实现跨夏令时的周期任务
- 04为 API 选择时区格式
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ github/ awesome-copilot --skill dotnet-timezone安装后在 Claude Code 中输入/dotnet-timezone确认已加载。
附带文件references/code-patterns.mdreferences/timezone-index.md
详细介绍
.NET 时区
为 .NET 和 C# 代码解决时区问题,提供生产环境安全的指导以及可直接复制粘贴的代码片段。
从正确的路径开始
首先识别请求类型:
- 地址或位置查询
- 时区 ID 查询
- UTC/本地时间转换
- 跨平台时区兼容性
- 调度或 DST 处理
- API 或持久化设计
如果库不明确,跨平台工作默认使用 TimeZoneConverter。如果场景涉及重复性调度或严格的 DST 规则,优先使用 NodaTime。
解析地址和位置
如果用户提供了地址、城市、地区、国家/地区或包含地名的文档:
- 从输入中提取每个位置。
- 阅读
references/timezone-index.md获取常见的 Windows 和 IANA 映射。 - 如果未列出确切位置,根据地理信息推断正确的 IANA 时区,然后将其映射到 Windows ID。
- 同时返回两个 ID 以及一个可直接使用的 C# 示例。
对于每个解析出的位置,提供:
Location: <resolved place>
Windows ID: <windows id>
IANA ID: <iana id>
UTC offset: <standard offset and DST offset when relevant>
DST: <yes/no>
然后包含一个跨平台代码片段,例如:
using TimeZoneConverter;
TimeZoneInfo tz = TZConvert.GetTimeZoneInfo("Asia/Colombo");
DateTime local = TimeZoneInfo.ConvertTimeFromUtc(DateTime.UtcNow, tz);
如果存在多个位置,为每个位置包含一个代码块,然后提供一个组合的多时区代码片段。
如果某个位置有歧义,列出可能的时区匹配项,并请用户选择正确的一个。
查询时区 ID
使用 references/timezone-index.md 进行 Windows 到 IANA 的映射。
始终提供两种格式:
- Windows ID,用于 Windows 上的
TimeZoneInfo.FindSystemTimeZoneById() - IANA ID,用于 Linux、容器、
NodaTime和TimeZoneConverter
生成代码
使用 references/code-patterns.md,并选择最适合的最小模式:
- 模式 1:
TimeZoneInfo用于仅限 Windows 的代码 - 模式 2:
TimeZoneConverter用于跨平台转换 - 模式 3:
NodaTime用于严格的时区运算和对 DST 敏感的调度 - 模式 4:
DateTimeOffset用于 API 和数据传输 - 模式 5:ASP.NET Core 持久化和呈现
- 模式 6:重复性作业和调度器
- 模式 7:有歧义和无效的 DST 时间戳
推荐第三方库时,始终包含包相关指导。
警告常见陷阱
在适用时提及相关警告:
TimeZoneInfo.FindSystemTimeZoneById()的时区 ID 是平台特定的。- 避免将
DateTime.Now存储到数据库中;应改为存储 UTC。 - 除非这是有意输入,否则将
DateTimeKind.Unspecified视为 bug 风险。 - DST 转换可能会跳过或重复本地时间。
- Azure Windows 和 Azure Linux 环境可能期望不同的时区 ID 格式。
响应形式
对于地址和位置请求:
- 为每个位置返回解析后的时区块。
- 用一句话说明推荐的实现方式。
- 包含一个可直接复制粘贴的 C# 代码片段。
对于代码和架构请求:
- 用一句话说明推荐的方法。
- 如果相关,提供时区 ID。
- 包含最小可运行代码片段。
- 如果需要,提及包要求。
- 如果重要,添加一条陷阱警告。
保持响应简洁且代码优先。
参考资料
references/timezone-index.md:常见的 Windows 和 IANA 时区映射references/code-patterns.md:可直接使用的 .NET 时区模式
评论
支持 Markdown