Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/davedelong/Chronology
Robust and type-safe date and time calculations for Swift
https://github.com/davedelong/Chronology
calendar calendar-api calendars date date-formatting date-time dates datetime swift swift-library time timezone
Last synced: 4 days ago
JSON representation
Robust and type-safe date and time calculations for Swift
- Host: GitHub
- URL: https://github.com/davedelong/Chronology
- Owner: davedelong
- License: mit
- Created: 2017-10-31T03:51:23.000Z (about 7 years ago)
- Default Branch: main
- Last Pushed: 2024-10-26T22:43:52.000Z (2 months ago)
- Last Synced: 2024-12-26T00:02:56.026Z (6 days ago)
- Topics: calendar, calendar-api, calendars, date, date-formatting, date-time, dates, datetime, swift, swift-library, time, timezone
- Language: Swift
- Homepage:
- Size: 3.63 MB
- Stars: 2,329
- Watchers: 47
- Forks: 77
- Open Issues: 13
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-ios - Chronology - Building a better date/time library. (Date & Time / Getting Started)
- awesome-ios-star - Chronology - Building a better date/time library. (Date & Time / Getting Started)
README
# Time
**Time** is a Swift package that makes it easy to perform robust and type-safe date and time calculations.
Working with calendars can be extremely complicated and error-prone. **Time** solves these problems by clarifying concepts and restricting improper usage through type-safe APIs.
## Installing
**Time** can be installed like any other Swift package. Add this to the `dependencies` section of your Package.swift:
```swift
.package(url: "https://github.com/davedelong/time", from: "1.0.0")
```## Platform Support
**Time** requires Swift 5.7 or later, as well as macOS 13/iOS 16 (or equivalent) or later. Core parts of the library are built on Swift's `Duration` type, which was introduced in macOS 13/iOS 16.
## Documentation
**Time**'s extensive documentation is hosted at the [Swift Package Index][spi].
Additionally, an "Examples" folder in this repository contains code illustrating how to use core parts of the library.
## The Basics
Here's the TL;DR of the documentation:
- If you want to know what time it is, you need the device's `RegionalClock`, which you get by using `Clocks.system`.
- A `RegionalClock` tells you the current time. For example, `.today` will give you the current calendar day. `.currentMinute` will give you the current time, accurate down to the _minute_ level.
- Each of these returned values has methods to retrieve more- and less- precise values. For example, `today.hours` will give you a sequence of all the "Hour" values in the day.
- These values can be _formatted_ into human-readable strings via their `.format(...)` methods.
For additional information, refer to [the documentation][spi] and included examples.
## Contributing
**Time** is fully open source, available at [https://github.com/davedelong/time][gh]. If you have feature requests, suggestions, or have discovered a bug, please open a [new issue][ghi].
[spi]: https://swiftpackageindex.com/davedelong/time
[gh]: https://github.com/davedelong/time
[ghi]: https://github.com/davedelong/time/issues## License
**Time** is licensed under the MIT License. For more information, see the [LICENSE](https://github.com/davedelong/time/blob/main/LICENSE) file.