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を優先します。- 明確な理由がない限り、セッターによる
Dateの変更は避けます。
3) タイムゾーンコンテキストを明示的に適用する
- オプション A:
TZDateの値を使用します。 - オプション B:決定的なタイムゾーンコンテキストを指定するため、
tz("Area/City")と date-fns のinオプションを使用します。
4) 安全にフォーマット/出力する
- 表示には
formatを使用します。 - 交換形式には標準規格対応のヘルパー(
formatISO、formatRFC3339)を使用します。 - 転送形式と表示形式は分けて管理します。
成果物
回答には以下を含めます。
- 正確なインポート。
- 用途に必要な、正しく動作する最小限の関数セット。
- タイムゾーンの方針(
TZDateと{ in: tz(...) }のどちらを使うか)とその理由。 - エッジケースに関する注意事項(DST の境界、トークンの正確性、無効な入力)。
段階的な情報開示
必要なものだけを読み込みます。
- 基本的なヘルパーについては
reference/core-functions.md。 @date-fns/tzのパターンについてはreference/native-timezones.md。- インポート/ランタイムの実践方法については
reference/imports-and-practices.md。 - トークンの正確性については
reference/format-parse-tokens.md。 - すぐにコピーして使えるスニペットについては
reference/examples.md。 - 「
date-fns-tzは決して使用しない」という厳格な指針についてはreference/anti-patterns.md。 - バージョンの確認方法とソースへのリンクについては
reference/version-and-sources.md。
コメント
Markdown 対応