日本語 · English

at — 日集合への壁時計時刻の付与

分類: 糖衣(stdlib・Gregorian 公開語=変換) / シグネチャ: at(a) : Stream -> Streama は単独時刻リテラル Thh:mm) / 名は確定(ADR-51)

意味

日集合の各日について、その日の壁時計 aの時点を返す。展開は壁時計正準形の機械的差し込み (糖衣=spec §4.8):

at(a) = s => (everyInstant |> strideBy(1d, from: a)) |> filter(t => coincides(s, day, t))

「その日の H 時」は壁時計の概念である。窓単位 shiftunit: hour)は経過時間 意味論(F76)で、DST のある tz では切替日に壁時計からずれる——at は tick(市民日幅の等差=壁時計 保存)で刻むため、切替日でも壁時計を保つ。単独時刻リテラルは epoch 錨日 1970-01-01(在圏 tz)で 錨打ちされる——評価範囲がどこまで過去でも欠けない(ADR-51)。

月末営業日の 17:00(経過算術形 snapTo(day) |> shift(+17, unit: hour) の置き換え——JST では 外延同値・警告の経路が消える):

# eval: 2026-08-01..2026-11-01
@JP
bizDay |> within(month) |> last |> at(T17:00)
#=> 2026-08-31T17:00 2026-09-30T17:00 2026-10-30T17:00

10 月は 10/31 が土曜なので前営業日 10/30 の 17:00。DST のある tz では壁時計の保存が経過形との 差になる(NY の春の切替日——経過形なら 10:00 に着地する。06 §6.1):

# eval: 2026-03-07..2026-03-10 tz: America/New_York
premise NY { calendar-system: Gregorian; tz: "America/New_York"; wkst: Sun }
@NY
everyDay |> at(T09:00)
#=> 2026-03-07T09:00 2026-03-08T09:00 2026-03-09T09:00

sub-hour も同様(T07:30——壁時計オフセット保存・F81)。「前日の 23:00」は日の調整を日の層で 済ませてから時刻を貼る: marks |> shift(-1, unit: day) |> at(T23:00)

落とし穴

関連

strideBy(展開の tick)・coincides(展開の述語)・ takeLast(直近 N との標準合成)・isOpen(時刻のは別の器= 営業時間)・ADR-51・F76/F81。