Release Notes
These are the release notes from bakame/tokei. We’ve tried to cover all changes,
including backward compatible breaks from the first commit through to the current stable release.
If we’ve missed anything, feel free to create an issue, or send a pull request.
version 1.0.0 - Daria
Date released: 2026-09-15
Added
- Support for nanoseconds to
Tokei\Duration - Support for PHP8.6
Time\Duration Tokei\DurationandTime\Durationshares the same API (public properties and public methods)Duration::toNumberStringDurationFormat::LargestUnitDurationFormat::TotalUnitDisplaySignenumInterval::shiftIntervalSet::append,IntervalSet::totalDurationTaskSet::shift,TaskSet::expand,TaskSet::roundTo,TaskSet::append,TaskSet::totalDurationEventSet::shift,EventSet::append,EventSet::replace,EventSet::removeLocalizeListWidthenumUnitWidthenumDurationStyleenum- the package now requires
symfony/polyfill-php86to use PHP8.6SortDirectionEnum
Fixed
- BC Break: mathematical operation methods of
Durationare renamed to matchTime\DurationAPI - BC Break:
Time::toDateTimeis renamedTime::today - BC Break:
Interval::fromLinearSpan*is marked as internal and removed from Public API. - BC Break: The
LocaleVerbosityclass is renamedTimeVerbosity.
Deprecated
- None
Removed
- BC Break:
Durationpublic properties are removed useDuration::$seconds,Duration::$nanosecondsandDuration::$negativemust be use instead - BC Break:
Duration::toDateIntervalremoved with no replacement - BC Break:
Interval::linear*public properties are removed with no replacement - BC Break: Removed manual autoload script
- BC Break:
Interval::add()andInterval::sub()replaced byInterval::shift() - BC Break:
IntervalSet::unshift()usedIntervalSet::append()instead - BC Break:
IntervalSet::add()andIntervalSet::sub()usedIntervalSet::shift()instead - BC Break:
IntervalSet::roundDurationTo()with no replacement - BC Break:
IntervalSet::push()useIntervalSet::append()instead - BC Break:
IntervalSet::duration()useIntervalSet::totalDuration()instead - BC Break:
IntervalSet::outsideOf()with no replacement - BC Break:
TaskSet::add()andTaskSet::sub()usedTaskSet::shift()instead - BC Break:
TaskSet::push()useTaskSet::append()instead - BC Break:
TaskSet::duration()useTaskSet::totalDuration()instead - BC Break:
TaskSet::outsideOf()with no replacement - BC Break:
EventSet::outside()with no replacement - BC Break:
EventSet::add()andEventSet::sub()usedEventSet::shift()instead - BC Break:
EventSet::push()useEventSet::append()instead - BC Break: removed the package
SortDirectionpolyfill, thesymfony/polyfill-php86package is use instead - BC Break:
Time::toLocaleStringuse theLocalizeclass directly instead. - BC Break: The
LocaleTimeFormatterclass is removed useLocalizeinstead.
version 0.3.0 - Chidoriso
Date released: 2026-07-20
Added
- BC BREAK:
DivisionResultimplementsArrayAccess Time::addandTime::subsupport variadics for duration argument.
Fixed
Duration::format(DurationFormat::Compact)for negative duration.- BC BREAK:
TaskSet::unionaligns signature withIntervalSet::union - BC BREAK:
TaskSet::intersectaligns signature withIntervalSet::intersect - BC BREAK:
TaskSet::differencealigns signature withIntervalSet::difference - BC BREAK:
Duration::compareno longer accept directDateTimeInterfaceinstances
Deprecated
- None
Removed
- BC BREAK:
DivisionResult::asTupleis removed useArrayAccessfor direct destructuring - BC BREAK:
InputNormalizer::durationno longer acceptsDateTimeInterfaceimplementing class
version 0.2.0 - botan
Date released: 2026-07-17
Added
Event,Task,EventSet,TaskSet,Identifiersto work with identified Temporal Values.IntervalSet::eachIntervalSet::transformIntervalSet::chronologicalIntervalSet::addIntervalSet::subIntervalSet::nextIntervalSet::previousIntervalSet::nearestIntervalSet::roundToIntervalSet::roundDurationToIntervalSet::formatAllInterval::fromFormatInterval::roundToInterval::roundDurationToDuration::fromDateIntervalDuration::fromFormatDuration::fullDayDuration::formatDuration::addDuration::subDuration::dividedIntoDuration::isZeroDuration::inDuration::moduloTime::fromDateTimeTime::toDateTimeTime::fromFormatTime::formatTime::sinceMidnightTime::offsetTime::addTime::subTime::utcTime::roundToLocaleTimeFormatterto improve time string localization usingext-intlSnapModeto unify roundingSearchModeto unify search type (linear or circular)LocaleVerbosityto allow fine-grained locale string representation using byLocaleTimeFormatter
Fixed
IntervalSet::everynow returnstruefor empty collectionInterval::splitAtnow correctly works on a circular range.IntervalSet::unionnow acceptsIntervaland/orIntervalSetas arguments to compute the union between sets/intervalsIntervalSet::differenceedge cases when dealing with collapsed or circular Intervals.Time::toLocaleStringaccepts timezone string identifier as well as fully instantiatedDateTimeZoneinstances.Time::toLocaleStringimproves timezone handling, the time is no longer affected by the timezone shift.- BC BREAK:
Duration::formatusing Timer format will always output the hours parts with at least two digits previously for hours below 10 one digit was used. - BC BREAK: Renamed methods suffixed with “Clock” to “Timer” which is a better description for
Duration - BC BREAK:
Duration::ofno longer accepts negative integer usenegated()orfromFormat. - BC BREAK:
Interval::lastingsignature parameter order. - BC BREAK:
Interval::shiftBoundsignature parameter order. - BC BREAK:
Unitenum now only exposes theinMicrosecondsmethod all other methods are moved to an internalUnitTransformerclass. - BC BREAK:
Time::nowhas a new mandatory timezone argument.
Deprecated
- None
Removed
- BC BREAK:
Duration::toClockFormatis removed and replaced byDuration::formatwith theDurationFormat::Timerargument - BC BREAK:
Duration::toIso8601is removed and replaced byDuration::formatwith theDurationFormat::Iso8601argument - BC BREAK:
Duration::toCompactis removed and replaced byDuration::formatwith theDurationFormat::Compactargument - BC BREAK:
Duration::incrementis removed useDuration::addinstead - BC BREAK:
Duration::isEmptyis removed useDuration::isZeroinstead - BC BREAK:
Duration::totalis removed and replaced byDuration::in - BC BREAK: all
Durationpublic properties are removed except formicrosecondsandsign - BC BREAK:
Interval::fromIso8601is removed and replaced byInterval::fromFormatwith theIntervalFormat::Iso8601StartDurationargument - BC BREAK:
Interval::compareDurationTois removed useDuration::compareinstead - BC BREAK:
SubSecondDisplayis removed with no remplacement use rounding with theRounding::Floormode - BC BREAK:
truncateTois removed useroundToinstead with the newRounding:Floormode - BC BREAK:
Time::fromDateis removed useTime::fromDateTimeinstead - BC BREAK:
Time::fromUnitOfDayis removed useTime::sinceMidnightinstead - BC BREAK:
Time::toUnitOfDayis removed useTime::ininstead - BC BREAK:
Time::toStringis removed useTime::formatinstead - BC BREAK:
IntervalSet::sortedargument was a string or PHP8.6SorDirectionenum is changed to only supports PHP8.6SorDirectionenum. - BC BREAK:
IntervalSet::allFormattedis removed useIntervalSet::formatAllinstead
version 0.1.0 - asagao
Date released: 2026-05-27
Initial release