测试已测试 | ✓ |
语言语言 | SwiftSwift |
许可 | MIT |
发布最后发布 | 2017年1月 |
SwiftSwift 版本 | 3.0 |
SPM支持 SPM | ✗ |
由 Christopher Jones 维护。
Kali 是一个用 Swift 编写的 iOS 库,旨在将原生日期对象引入 Swift 库。许多类型,如 String
和 Int
,已经在 Swift 中从 Objective-c 找到了原生类型,但 NSDate
没有这样的待遇。
Kali 提供了 DateTime,这是一个对象,旨在将 NSDate
、NSCalendar
和 NSTimeZone
的复杂性封装在一个更简单的接口中,使日期的交互比以前更容易、更安全。与其它库不同,Kali
并不旨在扩展 NSDate
或其他 Swift 原生类型;相反,它旨在创建一个新的、不可变的 Swift 类型,以更容易、更安全的方式封装在 NSDate
中找到的复杂功能。
Kali 仅与 Swift 2 和 Xcode 7 及以上版本兼容。不支持 Swift 任何之前的版本。
DateTime 通过尽可能模仿 NSDate
API 来实现尽可能简单和无缝。
例如,要创建一个包含当前日期和时间的 DateTime 实例,只需这样做
let currentDate = DateTime()
很多时候,我们需要将字符串转换为日期,比如从 API 调用中。通常,这需要使用 NSDateFormatter
和 NSCalendar
来获取所需的结果。但是,使用 DateTime,这简单到只需
let date = DateTime(string: "12/25/2001 14:23:23", format: "MM/dd/yyyy HH:mm:ss")
有时,我们只是想通过指定组成部分的值来简单地创建一个日期
let datetime = DateTime(month: 12, day: 25, year: 2001, hour: 12, minute: 23, second: 23)
访问日期值的各个组成部分很简单
let datetime = DateTime(month: 12, day: 13, year: 2000)
print(datetime.month) // 12
print(datetime.day) // 13
print(datetime.year) // 2000
DateTime 实现 RawRepresentable
,并可以使用自 1970 年 1 月 1 日起的秒数时间间隔方便地进行初始化。
DateTime 实现 Comparable
,这使得可以使用 ==
、!=
、>
、>=
、<
、<=
等比较操作符轻松比较两个 DateTime 对象。
DateTime 初始化可以接受一个可选的 NSTimeZone
参数。如果未指定,默认为设备时区。时区属性是 DateTime 的一个基本组成部分,确保您的 DateTime 值正好如预期的那样。
最后,DateTime 是不可变的:一旦初始化,其状态就不能修改或更改。对 DateTime 对象(例如通过添加分钟或日组成部分)所做的任何潜在修改都将导致新的 DateTime 对象。
TimeSpans 用于以简单的方式来向 DateTime 对象添加时间,也可以用于确定两个 DateTime 之间的时间差。
向 DateTime 添加时间值很简单。如果您只需要向 DateTime 添加单个组件
let datetime = DateTime()
let fiveMinutesFromNow = dateTime.addMinutes(5)
对于更复杂的时间间隔,您可以使用 addTimespan
。
let datetime = DateTime()
let timespan = TimeSpan(days: 0, hours: 1, minutes: 5, seconds: 1)
let newDateTime = datetime.addTimespan(timespan)
确定两个日期之间的时间间隔同样简单。如果您想确定两个日期之间过去了多少时间
let firstDateTime = DateTime()
let secondDateTime = firstDateTime.addMinutes(-5)
let timespan = firstDateTime.timespanSinceDate(secondDateTime)
print(timespan.minutes) // 5
TimeSpan 实现 RawRepresentable
,并且可以使用秒的时间间隔方便地进行初始化。
Kali 通过 CocoaPods 提供。要安装它,只需将以下行添加到您的 Podfile 中
pod "Kali", '~> 1.0'
欢迎所有对改进此库的贡献!
请随意为此库创建一个拉取请求以添加或修复功能。在贡献时,请确保遵循库的一般风格:使用 self
来表示所有类级属性,为 AppleDocs 记录所有公共头文件等。
如果您不想直接贡献,但想增强库或发现了一个错误,请提交一个问题。
Christopher Jones,电子邮件:[email protected]
Kali 在 MIT 许可证下可用。查看 LICENSE 文件以获取更多信息。