For AI agents: the complete documentation index is available at https://open-spaced-repetition.github.io/ts-fsrs/ja-JP/llms.txt, the full documentation bundle is available at https://open-spaced-repetition.github.io/ts-fsrs/ja-JP/llms-full.txt, and this page is available as Markdown at https://open-spaced-repetition.github.io/ts-fsrs/ja-JP/guide/chrono/temporal-instant.md.

Temporal Instant

timezone と fractionalDays はスケジューラーの config 直下に指定します。例:config: { ...modelConfig, timezone: 'Asia/Tokyo', fractionalDays: false }。両方を省略するとデフォルトの 'UTC' と false を使用します。直接呼ぶ場合は完全な設定を渡します:temporalInstantChrono.create({ config: { timezone: 'Asia/Tokyo', fractionalDays: false } })。スケジューラーの生成時には設定の検証とデフォルト値の補完が行われます。

fractionalDays: false では指定したタイムゾーンの暦日差を計算し、true ではそのタイムゾーンでの日数の小数部分も含めます。add は UTC では1日を24時間として加算し、それ以外のタイムゾーンでは暦日を加算します。夏時間の切り替えをまたぐと、現地の1日は24時間より短く、または長くなることがあります。小数部分の加算には、隣接する現地の日の実際の長さを使います。このプリセットでは、1日の切り替え時刻を任意の時刻に設定することはできません。

プリセットを実行する

アプリケーションに temporal-polyfill をインストールします。この例は Chrono の作成前にグローバルエントリーポイントを読み込み、実行環境にネイティブの Temporal がない場合だけ polyfill を適用します。2つ目の import はグローバルな TypeScript 型宣言を読み込みます。

npm
yarn
pnpm
bun
deno
npm install temporal-polyfill
import 'temporal-polyfill/global'
import 'temporal-polyfill/types/global'
import { 
const temporalInstantChrono: Chrono<{
    readonly time: SRSSchema<{
        input: Temporal.Instant;
        output: Temporal.Instant;
    }>;
    readonly config: SRSSchema<{
        input: {
            readonly timezone?: string | undefined;
            readonly fractionalDays?: boolean | undefined;
        };
        output: {
            readonly timezone: string;
            readonly fractionalDays: boolean;
        };
    }>;
    readonly fields: {
        readonly card: SRSSchema<{
            input: {
                dueAt: Temporal.Instant;
                lastReviewAt?: (Temporal.Instant | null) | undefined;
            };
            output: {
                dueAt: Temporal.Instant;
                lastReviewAt: Temporal.Instant | null;
            };
        }>;
        readonly revlog: SRSSchema<{
            input: {
                dueAt: Temporal.Instant;
                lastReviewAt?: (Temporal.Instant | null) | undefined;
                reviewTime: Temporal.Instant;
            };
            output: {
                dueAt: Temporal.Instant;
                lastReviewAt: Temporal.Instant | null;
                reviewTime: Temporal.Instant;
            };
        }>;
    };
}>
temporalInstantChrono
} from 'ts-fsrs'
const
const clock: ChronoCore<Temporal.Instant>
clock
=
const temporalInstantChrono: Chrono<{
    readonly time: SRSSchema<{
        input: Temporal.Instant;
        output: Temporal.Instant;
    }>;
    readonly config: SRSSchema<{
        input: {
            readonly timezone?: string | undefined;
            readonly fractionalDays?: boolean | undefined;
        };
        output: {
            readonly timezone: string;
            readonly fractionalDays: boolean;
        };
    }>;
    readonly fields: {
        readonly card: SRSSchema<{
            input: {
                dueAt: Temporal.Instant;
                lastReviewAt?: (Temporal.Instant | null) | undefined;
            };
            output: {
                dueAt: Temporal.Instant;
                lastReviewAt: Temporal.Instant | null;
            };
        }>;
        readonly revlog: SRSSchema<{
            input: {
                dueAt: Temporal.Instant;
                lastReviewAt?: (Temporal.Instant | null) | undefined;
                reviewTime: Temporal.Instant;
            };
            output: {
                dueAt: Temporal.Instant;
                lastReviewAt: Temporal.Instant | null;
                reviewTime: Temporal.Instant;
            };
        }>;
    };
}>
temporalInstantChrono
.
Chrono<{ readonly time: SRSSchema<{ input: Temporal.Instant; output: Temporal.Instant; }>; readonly config: SRSSchema<{ input: { readonly timezone?: string | undefined; readonly fractionalDays?: boolean | undefined; }; output: { readonly timezone: string; readonly fractionalDays: boolean; }; }>; readonly fields: { readonly card: SRSSchema<{ input: { dueAt: Temporal.Instant; lastReviewAt?: (Temporal.Instant | null) | undefined; }; output: { dueAt: Temporal.Instant; lastReviewAt: Temporal.Instant | null; }; }>; readonly revlog: SRSSchema<{ input: { dueAt: Temporal.Instant; lastReviewAt?: (Temporal.Instant | null) | undefined; reviewTime: Temporal.Instant; }; output: { dueAt: Temporal.Instant; lastReviewAt: Temporal.Instant | null; reviewTime: Temporal.Instant; }; }>; }; }>.create: (ctx: {
    readonly config: {
        readonly timezone: string;
        readonly fractionalDays: boolean;
    };
}) => ChronoCore<Temporal.Instant>
create
({
config: { timezone: 'America/New_York', fractionalDays: false }, }) const
const fractionalClock: ChronoCore<Temporal.Instant>
fractionalClock
=
const temporalInstantChrono: Chrono<{
    readonly time: SRSSchema<{
        input: Temporal.Instant;
        output: Temporal.Instant;
    }>;
    readonly config: SRSSchema<{
        input: {
            readonly timezone?: string | undefined;
            readonly fractionalDays?: boolean | undefined;
        };
        output: {
            readonly timezone: string;
            readonly fractionalDays: boolean;
        };
    }>;
    readonly fields: {
        readonly card: SRSSchema<{
            input: {
                dueAt: Temporal.Instant;
                lastReviewAt?: (Temporal.Instant | null) | undefined;
            };
            output: {
                dueAt: Temporal.Instant;
                lastReviewAt: Temporal.Instant | null;
            };
        }>;
        readonly revlog: SRSSchema<{
            input: {
                dueAt: Temporal.Instant;
                lastReviewAt?: (Temporal.Instant | null) | undefined;
                reviewTime: Temporal.Instant;
            };
            output: {
                dueAt: Temporal.Instant;
                lastReviewAt: Temporal.Instant | null;
                reviewTime: Temporal.Instant;
            };
        }>;
    };
}>
temporalInstantChrono
.
Chrono<{ readonly time: SRSSchema<{ input: Temporal.Instant; output: Temporal.Instant; }>; readonly config: SRSSchema<{ input: { readonly timezone?: string | undefined; readonly fractionalDays?: boolean | undefined; }; output: { readonly timezone: string; readonly fractionalDays: boolean; }; }>; readonly fields: { readonly card: SRSSchema<{ input: { dueAt: Temporal.Instant; lastReviewAt?: (Temporal.Instant | null) | undefined; }; output: { dueAt: Temporal.Instant; lastReviewAt: Temporal.Instant | null; }; }>; readonly revlog: SRSSchema<{ input: { dueAt: Temporal.Instant; lastReviewAt?: (Temporal.Instant | null) | undefined; reviewTime: Temporal.Instant; }; output: { dueAt: Temporal.Instant; lastReviewAt: Temporal.Instant | null; reviewTime: Temporal.Instant; }; }>; }; }>.create: (ctx: {
    readonly config: {
        readonly timezone: string;
        readonly fractionalDays: boolean;
    };
}) => ChronoCore<Temporal.Instant>
create
({
config: { timezone: 'America/New_York', fractionalDays: true }, }) // Noon in New York, the day before daylight saving time starts. const from = Temporal.Instant.from('2026-03-07T17:00:00Z') const next =
const clock: ChronoCore<Temporal.Instant>
clock
.
ChronoCore<Temporal.Instant>.add: (from: Temporal.Instant, days: number) => Temporal.Instant
add
(from, 1)
const halfDay =
const clock: ChronoCore<Temporal.Instant>
clock
.
ChronoCore<Temporal.Instant>.add: (from: Temporal.Instant, days: number) => Temporal.Instant
add
(from, 0.5)
console.log( JSON.stringify( { nextDayUTC: next.toString(), elapsedHours: from.
Temporal.Instant.until(other: Temporal.InstantLike, options?: Temporal.RoundingOptionsWithLargestUnit<Temporal.TimeUnit>): Temporal.Duration (+1 overload)
until
(next).
Temporal.Duration.total(totalOf: Temporal.PluralizeUnit<Temporal.DateUnit | Temporal.TimeUnit>): number (+3 overloads)
total
('hours'),
calendarDays:
const clock: ChronoCore<Temporal.Instant>
clock
.
ChronoCore<Temporal.Instant>.difference: (from: Temporal.Instant, to: Temporal.Instant) => number

Returns the distance from the previous review time to the current time.

difference
(from, next),
fractionalDays:
const fractionalClock: ChronoCore<Temporal.Instant>
fractionalClock
.
ChronoCore<Temporal.Instant>.difference: (from: Temporal.Instant, to: Temporal.Instant) => number

Returns the distance from the previous review time to the current time.

difference
(from, halfDay),
}, null, 2 ) )

ニューヨークの3月7日正午は 17:00 UTC です。現地の暦日を1日加算すると3月8日正午、つまり 16:00 UTC になります。夏時間が始まるため、実際の経過時間は23時間です。fractionalDays: true は半日の加算を 0.5 として計算します。