date-fns
3
总安装量
2
周安装量
#61342
全站排名
安装命令
npx skills add https://github.com/wottpal/skills --skill date-fns
Agent 安装分布
mcpjam
2
command-code
2
claude-code
2
junie
2
windsurf
2
zencoder
2
Skill 文档
date-fns + @date-fns/tz
Purpose
Use this skill to implement, review, and refactor date/time code with modern date-fns and the native timezone package @date-fns/tz.
Version baseline (re-check when invoked)
date-fnslatest verified:4.1.0@date-fns/tzlatest verified:1.4.1- Re-check commands:
npm view date-fns versionnpm view @date-fns/tz versionnpm view date-fns dist-tags --jsonnpm view @date-fns/tz dist-tags --json
When to use
- Parsing, validating, formatting, comparing, and calculating dates.
- Building timezone-aware business logic (scheduling, boundaries, reporting).
- Migrating date logic to immutable utility patterns.
- Hardening code against DST and token-format bugs.
Non-negotiable rules
- Use native timezone package:
@date-fns/tz. - Do not recommend
date-fns-tz. - If legacy code already uses
date-fns-tz, suggest migration to@date-fns/tz. - Parse once, validate early (
isValid), and passDatevalues through operations. - Use Unicode tokens correctly (
yyyy,MM,dd) and avoid Moment-style token assumptions. - For timezone-sensitive calculations, use explicit timezone context (
TZDateor{ in: tz("...") }).
Canonical imports
import { format, parseISO, isValid, addDays, startOfDay } from "date-fns";
import { TZDate, tz, tzOffset, tzName, tzScan } from "@date-fns/tz";
Workflow
1) Normalize input
- Use
parseISO/toDatefor conversion. - Guard with
isValid. - Keep internal values as
Date/TZDate, not mixed string math.
2) Compute with pure helpers
- Prefer
add/sub,differenceIn*,startOf*/endOf*,isSame*,isWithinInterval. - Avoid mutating
Datevia setters unless there is a clear reason.
3) Apply timezone context explicitly
- Option A: use
TZDatevalues. - Option B: use date-fns
inoption withtz("Area/City")for deterministic zone context.
4) Format/output safely
- Use
formatfor display. - Use standards helpers for exchange formats (
formatISO,formatRFC3339). - Keep transport format and display format separate.
Deliverables
When answering, provide:
- Exact imports.
- Minimal correct function set for the use case.
- Timezone strategy (
TZDatevs{ in: tz(...) }) and why. - Edge-case notes (DST boundaries, token correctness, invalid inputs).
Progressive disclosure
Load only what is needed:
reference/core-functions.mdfor essential helpers.reference/native-timezones.mdfor@date-fns/tzpatterns.reference/imports-and-practices.mdfor import/runtime practices.reference/format-parse-tokens.mdfor token correctness.reference/examples.mdfor copy-ready snippets.reference/anti-patterns.mdfor strict “never usedate-fns-tz” guidance.reference/version-and-sources.mdfor version checks and source links.