Skip to content

This site describes solve-engine as it is on main: 2.43.0, which npm does not have yet. npm installs 2.40.0, so a page may show an answer that version does not give yet.

TIME_PACKAGE

const TIME_PACKAGE: IEnginePackage;

Defined in: packages/engine/src/packages/time/TimePackage.ts:83

Clock-time-of-day arithmetic: 9:00am, 16:00, 4pm (anchored to today’s calendar date), 7:30 to 20:45 / 4pm to 3am interval durations (midnight-rollover aware), 30 fps frame-rate literals (a Rate value. See vm/Value.ts), and 03:04:05 / 00:00:01.5 lap-time/stopwatch-split durations (two colons, vs clock-time’s one). Distinct from the Datetime package’s calendar-date arithmetic. See packages/time/ vs packages/datetime/.

Full HH:MM:SS:FF video-timecode literal parsing + fps-aware carry arithmetic: 01:02:03:04 at 30 fps / ... @ 30 fps (a Uom(totalFrames, "timecode@<fps>") value. See vm/Value.ts’s timecode section) timecode + N frames / + <duration> / + timecode (sum) / - timecode (difference), all special-cased in vm/VM.ts’s ADD/SUB dispatch (combineTimecode()), plus timecode in frames and the reverse <N> frames @ <fps> -> HH:MM:SS:FF string conversion (see parselets/VideoTimecodeParselet.ts/FrameCountParselet.ts and timecode/TimecodeMath.ts). 30 fps × <duration> frame-count math (below) composes with this unchanged, the fps literal itself is unaffected by any of the above. Likewise, pretty-printing a duration back as "3 hours 15 min" (as timespan) or "03:04:05" (as laptime) is a converters package (Phase 1c) concern. This package only produces the underlying Uom values.

Also: timezone conversion (6pm Sydney in Chicago, or a time held in a variable, t Sydney in Chicago), into several zones at once and on a named day (3pm London on 23 September 2026 in Tokyo, New York and Sydney), the shared stretch of the same hours across zones (overlap of 9am to 5pm in London and New York), current time/date-in-a-zone queries (time in Paris, date in Vancouver), and zone-offset deltas (time difference between Seattle and Moscow). See timezones/CityZones.ts/ZoneMath.ts. Built entirely on native Intl.DateTimeFormat/IANA data, no external dependency. Results are String values (formatted, human-readable), not Datetime. This engine’s Datetime representation is a bare epoch-ms number with no zone tag, so there’s no way to represent “this instant, but interpreted through zone X” as anything other than a pre-formatted string; see ZoneMath.ts’s doc comment.

SCOPE DECISION: the alternate phrasing <City> time (e.g. “Tokyo time”, city first) is deliberately NOT implemented, it would need “time” registered as a keyword reachable from a BARE city identifier’s infix position, and “time” is exactly the kind of common noun this session found real trouble with (see MathPhrasesPackage.ts’s “total” regression note). time in <city> covers the same need unambiguously.