Releases: ethlo/itu
v1.14.0
New Features
ISO 8601 Duration Parsing & Formatting
- Added support for parsing and formatting ISO 8601 durations.
- Supports full precision, including fractional seconds.
- Allows days, weeks, hours, minutes, and seconds, while disallowing years and months.
- Supports negative durations, which start with "-" (e.g., "-P1DT2H").
- Enforces case sensitivity for units, strictly following ISO 8601 (e.g., P1D is valid, but P1d is not).
- In the tradition of this library we are at least 5x faster than the JDK parsing and producing much less GC pressure.
v1.13.0
In version 1.12.0, the Java module name was changed from com.ethlo.time
to com.ethlo.time.itu
to better align with the ITU library name. However, this change caused unexpected disruptions for downstream projects. To restore compatibility and minimize friction, the module name is now being reverted to com.ethlo.time
in version 1.13.0.
This adjustment follows the complete removal of module support in version 1.11.0, which was later reconsidered based on user feedback. I recognize the impact these changes have had on users and will take greater care to ensure stability in future releases.
Thank you for your patience and support. If you encounter any issues, please report them, and as always, contributions and feedback are welcome.
v1.12.0
Release 1.11.0
Breaking Changes
- Dropped Java 8 support – The minimum required Java version is now Java 11.
- Removed multi-module support – The library is now a single-module project for simplicity.
- Removed OSGi metadata – This library no longer includes OSGi-specific packaging.
- OSGi users should create their own wrapper bundle if needed.
Improvements
- Simplified project structure and build process.
- Reduced maintenance overhead by removing legacy compatibility layers.
Migration Notes
- Ensure your project runs on Java 11 or later before upgrading.
- If you were relying on OSGi metadata, consider using a tool like
bnd-maven-plugin
to generate an OSGi bundle externally.
v1.10.3
v1.10.2
v1.10.1
v1.10.0
v1.9.0
New features
- Support for
parseDateTime(...)
withjava.text.ParsePosition
. This avoids the need to use substring for passing in the date-time string. - Support for parsing leniently with
ParseConfig
which allows the configuration of the date/time separator (typicallyT
) and the fragment separator (typically.
). - More expressive and better aligned error messages.
v1.8.0
New features
Parsing will now throw an DateTimeParseException
instead of the parent DateTimeException
. This gives access to the index of the error if any.
Bug-fixes
- An
ArrayIndexOutOfBoundsException
would be thrown in case of a specific, erroneous date-time string. - Parsing a date-time with a leap-second, but without time-offset would throw a
NullPointerException
due to the missing ZoneOffset.
Remediation
There has now been added additional tests and even intelligent fuzzer tests through the use of Jazzer.