Foundation
PackagesDate

Concepts

@bi-shop-it/lib/date の設計方針と基本概念。

ブランド型による型安全性

DateOnlyDateTimestring のブランド型である。生の stringDate とは型レベルで区別されるため、誤った値の混入をコンパイル時に検出できる。

type DateOnly = string & { readonly __brand: 'DateOnly' }; // "2026-06-15"
type DateTime = string & { readonly __brand: 'DateTime' }; // "2026-06-15T09:00:00.000Z"

DateOnly と DateTime の使い分け

形式用途
DateOnlyYYYY-MM-DD誕生日、期限など時刻が不要な日付
DateTimeYYYY-MM-DDTHH:mm:ss.sssZ作成日時、更新日時など時刻が必要な日時

内部表現は常に UTC

DateTime は UTC の ISO 8601 文字列のみを許可する。タイムゾーンオフセット付き(+09:00 等)は受け付けない。ローカル時刻への変換は表示時に Timezone モジュールの関数で行う。

テスト時の時刻制御

dateTimeNowdateOnlyToday は内部で 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();

On this page