Swiftpack.co - treatwell/ISO8601PeriodDuration as Swift Package

Swiftpack.co is a collection of thousands of indexed Swift packages. Search packages.
See all packages published by treatwell.
treatwell/ISO8601PeriodDuration 3.1.0
Parse ISO 8601 period-duration strings into DateComponents
⭐️ 8
🕓 2 years ago
.package(url: "https://github.com/treatwell/ISO8601PeriodDuration.git", from: "3.1.0")



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:

    .year -> nil
    .month -> nil
    .day -> nil
    .hour -> 2
    .minute -> 30
    .second -> nil

Note: weeks (P3W) are supported, though they end up translated to days.

Author Information

David Roman - [email protected]


The contents of this repository are licensed under the Apache License, version 2.0.


Stars: 8
Last commit: 2 years ago
jonrohan Something's broken? Yell at me @ptrpavlik. Praise and feedback (and money) is also welcome.

Release Notes

2 years ago
  • Added Hashable support for wrappers (#3).

Swiftpack is being maintained by Petr Pavlik | @ptrpavlik | @swiftpackco | API | Analytics