关于 date-fns
用于使用 date-fns 和 @date-fns/tz 编写、审查及重构日期时间代码的指导技能,强调明确时区上下文、尽早验证输入,并规避解析和夏令时问题。
主要功能
- 01日期解析与验证
- 02时区感知计算
- 03格式化与比较指导
- 04不可变工具函数模式
- 05夏令时与令牌防错
适用场景
- 01实现业务排期逻辑
- 02审查日期时间代码
- 03迁移旧版时区处理
- 04避免格式令牌错误
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ wottpal/ skills --skill date-fns安装后在 Claude Code 中输入/date-fns确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
reference/anti-patterns.mdcore-functions.mdexamples.mdformat-parse-tokens.mdimports-and-practices.mdnative-timezones.mdversion-and-sources.md详细介绍
date-fns + @date-fns/tz
用途
使用此技能,通过现代 date-fns 和原生时区包 @date-fns/tz 实现、审查和重构日期/时间代码。
版本基线(调用时重新检查)
- 已验证的最新
date-fns版本:4.1.0 - 已验证的最新
@date-fns/tz版本:1.4.1 - 重新检查的命令:
npm view date-fns versionnpm view @date-fns/tz versionnpm view date-fns dist-tags --jsonnpm view @date-fns/tz dist-tags --json
适用场景
- 解析、验证、格式化、比较和计算日期。
- 构建具备时区感知能力的业务逻辑(排程、边界、报告)。
- 将日期逻辑迁移到不可变工具模式。
- 加强代码对夏令时(DST)和令牌格式错误的防护。
不可妥协的规则
- 使用原生时区包:
@date-fns/tz。 - 不要推荐
date-fns-tz。 - 如果旧代码已使用
date-fns-tz,请建议迁移到@date-fns/tz。 - 只解析一次,尽早验证(
isValid),并在操作中传递Date值。 - 正确使用 Unicode 令牌(
yyyy、MM、dd),避免沿用 Moment 风格的令牌假设。 - 对于时区敏感的计算,使用显式时区上下文(
TZDate或{ in: tz("...") })。
标准导入
import { format, parseISO, isValid, addDays, startOfDay } from "date-fns";
import { TZDate, tz, tzOffset, tzName, tzScan } from "@date-fns/tz";
工作流
1) 规范化输入
- 使用
parseISO/toDate进行转换。 - 使用
isValid进行检查。 - 内部值保持为
Date/TZDate,不要混用字符串运算。
2) 使用纯函数辅助工具进行计算
- 优先使用
add/sub、differenceIn*、startOf*/endOf*、isSame*、isWithinInterval。 - 除非有明确理由,否则避免通过 setter 修改
Date。
3) 显式应用时区上下文
- 选项 A:使用
TZDate值。 - 选项 B:使用 date-fns 的
in选项和tz("Area/City"),以获得确定性的时区上下文。
4) 安全地格式化/输出
- 使用
format进行显示。 - 使用标准格式辅助工具处理交换格式(
formatISO、formatRFC3339)。 - 将传输格式与显示格式分开。
交付内容
回答时请提供:
- 准确的导入语句。
- 针对使用场景所需的最精简正确函数集。
- 时区策略(
TZDate或{ in: tz(...) })及原因。 - 边缘情况说明(DST 边界、令牌正确性、无效输入)。
渐进式披露
仅加载所需内容:
reference/core-functions.md:核心辅助工具。reference/native-timezones.md:@date-fns/tz的使用模式。reference/imports-and-practices.md:导入和运行时实践。reference/format-parse-tokens.md:令牌正确性。reference/examples.md:可直接复制的代码片段。reference/anti-patterns.md:严格禁止使用date-fns-tz的指导。reference/version-and-sources.md:版本检查和来源链接。
评论
支持 Markdown