tempest/datetime
tempest/datetime offers a clean, immutable date and time API for PHP, with parsing, formatting, timezone handling, and convenient helpers for comparing and manipulating dates. A lightweight option for everyday datetime work.
Architecture fit
tempest/datetime is the datetime component of the Tempest framework, extracted as a read-only sub-split. It is not a Laravel package: no service provider, no facade, no config, no Eloquent casts, no validation rules, no Blade directives. Everything Laravel-shaped must be written by us.ext-intl (ICU), i.e. immutable, calendar-aware types with a Tempest\… namespace. This overlaps almost entirely with Carbon + ext-intl, which Laravel already ships and wires into Eloquent, now(), the scheduler, date validation, and Blade.Integration feasibility
tempest/support or other framework primitives (container, attributes, discovery) that assume a Tempest kernel? If yes, we inherit transitive framework surface area from a non-Laravel framework. This is the first spike.CastsAttributes) for each persisted type, Castable/JsonSerializable adapters at API boundaries, a bridge to/from CarbonImmutable for anything Laravel hands us (scheduler, now(), queue payloads, signed URLs, cache TTLs), and a formatter for Blade/API output.Technical risk
tempestphp/tempest-framework. Do not read the score as "unmaintained," but do read it as "you cannot judge health from this repo page; you must read the parent."ext-intl and the system ICU/timezone database. Container images, CI, and prod must be pinned to matching ICU builds or DST/zone/formatting edge cases diverge between environments. Carbon has the same class of risk but a larger body of tribal knowledge around it.Key questions
tempest/framework or its container/discovery layer?ext-intl a hard requirement or polyfilled?CarbonImmutable + IntlDateFormatter — non-Gregorian calendar support? Strongly-typed Duration/Interval distinction? Attribute-driven serialization?Stack fit
tempest/datetime only where its semantics earn their keep — e.g. a booking/availability domain needing locale-correct calendar arithmetic, or reporting surfaces with heavy non-Gregorian/locale formatting.App\Domain\Time\Clock, …\Calendar), with Tempest types as an internal implementation detail. No Tempest type in a controller signature, model property, or API resource.datetime/timestamp columns. Convert at the edges. Do not let a third-party datetime type define the storage contract.Migration path
Compatibility
^) until upstream reaches 1.0, and record the corresponding framework commit SHA in the ADR.composer audit note: verify transitive dependencies before first install; a framework split pulling container code is a stop signal.Sequencing
Maintenance
Support
Scaling
ext-intl. Immutability may reduce a class of aliasing bugs. This is not a performance decision.Failure modes
Ramp-up
How can I help you explore Laravel packages today?