Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/davedelong/time
Robust and type-safe date and time calculations for Swift
https://github.com/davedelong/time
calendar calendar-api calendars date date-formatting date-time dates datetime swift swift-library time timezone
Last synced: 25 days ago
JSON representation
Robust and type-safe date and time calculations for Swift
- Host: GitHub
- URL: https://github.com/davedelong/time
- Owner: davedelong
- License: mit
- Created: 2017-10-31T03:51:23.000Z (about 7 years ago)
- Default Branch: main
- Last Pushed: 2024-04-11T14:59:28.000Z (7 months ago)
- Last Synced: 2024-08-04T00:06:44.687Z (3 months ago)
- Topics: calendar, calendar-api, calendars, date, date-formatting, date-time, dates, datetime, swift, swift-library, time, timezone
- Language: Swift
- Homepage:
- Size: 3.61 MB
- Stars: 2,307
- Watchers: 48
- Forks: 76
- Open Issues: 12
-
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-swift - Chronology - Building a better date/time library. (Libs / Date)
- fucking-awesome-swift - Chronology - Building a better date/time library. (Libs / Date)
- awesome-swift - Chronology - Building a better date/time library for Swift ` 📝 2 months ago ` (Date [🔝](#readme))
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.