PackagesDate
Concepts
@bi-shop-it/lib/date の設計方針と基本概念。
ブランド型による型安全性
DateOnly と DateTime は string のブランド型である。生の string や Date とは型レベルで区別されるため、誤った値の混入をコンパイル時に検出できる。
type DateOnly = string & { readonly __brand: 'DateOnly' }; // "2026-06-15"
type DateTime = string & { readonly __brand: 'DateTime' }; // "2026-06-15T09:00:00.000Z"DateOnly と DateTime の使い分け
| 型 | 形式 | 用途 |
|---|---|---|
DateOnly | YYYY-MM-DD | 誕生日、期限など時刻が不要な日付 |
DateTime | YYYY-MM-DDTHH:mm:ss.sssZ | 作成日時、更新日時など時刻が必要な日時 |
内部表現は常に UTC
DateTime は UTC の ISO 8601 文字列のみを許可する。タイムゾーンオフセット付き(+09:00 等)は受け付けない。ローカル時刻への変換は表示時に Timezone モジュールの関数で行う。
テスト時の時刻制御
dateTimeNow や dateOnlyToday は内部で Clock モジュールの現在時刻を参照する。テスト時は setClock で固定し、テスト後に resetClock で戻す。
import { dateTimeNow, setClock, resetClock } from '@bi-shop-it/lib/date';
setClock(() => new Date('2026-06-15T10:00:00.000Z'));
console.log(dateTimeNow()); // "2026-06-15T10:00:00.000Z"
resetClock();