Lightweight library to parse ISO 8601 period-duration strings into DateComponents, motivated by the lack of support for this standard in Foundation.
It's a rough equivalent of Java's PeriodDuration, except it only provides the parsing side of its functionality, leaving representation to the built-in DateComponents.
It leverages Swift 5.1's property wrappers in order to make parsing functionality as unintrusive as possible, optimistic for a seamless drop-in replacement when/if Apple ever introduces a similar solution into Foundation.
Consider the following struct:
struct Appointment: Decodable {
@ISO8601PeriodDuration var duration: DateComponents
}
Decoded with the following JSON:
{
"duration": "PT2H30M"
}
It'll yield:
DateComponents
.year -> nil
.month -> nil
.day -> nil
.hour -> 2
.minute -> 30
.second -> nil
Note: weeks (P3W
) are supported, though they end up translated to days.
David Roman - [email protected]
The contents of this repository are licensed under the Apache License, version 2.0.