SkillAgentSearch skills...

ISO8601PeriodDuration

Parse ISO 8601 period-duration strings into DateComponents

Install / Use

/learn @treatwell/ISO8601PeriodDuration
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

ISO8601PeriodDuration

Usage

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.

Example

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.

Author Information

David Roman - d@vidroman.dev

License

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

Related Skills

View on GitHub
GitHub Stars8
CategoryDevelopment
Updated4y ago
Forks1

Languages

Swift

Security Score

75/100

Audited on Nov 19, 2021

No findings