📆
Datez通过日期、日期组件和时间段轻松处理日期
突出显示
-
仅包含两个自定义结构体 (值类型大受欢迎!)
DateView
: 与Calendar
关联的Date
CalendarComponents
: 类似于DateComponents
,但与Calendar
无关。
-
完全没有硬编码
目前唯一需要硬编码的情况是通过将值设置为0
或1
来清除日期组件。没有这样的壁纸
minutes = seconds * 60
. -
模块化组合设计
仅在一种方式下实现某个功能,而不是在到处复制粘贴代码,造成大量令人头疼的问题。
功能
您可以在框架附带的游戏场中使用它们!
快速且明确地访问日期组件
let someDate = Date()
let currentCalendar = someDate.currentCalendar.components.year
let gregorianDay = someDate.gregorian.components.day
let hijriMonth = someDate.islamicCivil.components.month
简单且简练的日期操作
let date = Date()
let gregorianDate = date.gregorian
// Adding components
let tomorrow = gregorianDate + 1.day
// Relative accessors
let firstThingTomorrow = tomorrow.beginningOfDay
// Easy tweaking
let firstThingTomorrowButIn1984 = firstThingTomorrow.update(year: 1984)
// now, lets get the date
let newDate = firstThingTomorrowButIn1984.date
便捷的日期操作符
// Just calling timeIntervalSinceDate
let difference = Date(timeIntervalSinceNow: 5.minutes.timeInterval) - Date()
// Just calling dateByAddingTimeInterval
let afterFiftyHours = Date() + 50.hours.timeInterval
// Just calling compare:
let compareResult = Date(timeIntervalSinceNow: 8.hours.timeInterval) < Date()
(额外奖励):持续时间
将其标记为额外奖励,因为它在精确计算方面并不是很理想,但在需要便利时非常有用。例如,设置过期间隔和从 TimeInterval
估计组件。
// Easily access TimeInterval to construct durations
let expirationInterval = 300.days.timeInterval
// Convert back to a single date component
let months = expirationInterval.totalMonths // 9
// Or multiple components
let components = expirationInterval.components
// components ≈ CalendarComponents(day: 6, month: 9)
开始使用
Carthage
Carthage 已完全支持。只需将以下行添加到您的 Cartfile
github "SwiftKitz/Datez" ~> 3.1
CocoaPods
CocoaPods 已完全支持。只需将以下行添加到您的 Podfile
pod 'Datez'
子模块
对于手动安装,您可以直接抓取源代码或通过Git子模块,然后简单地将
- 将 `
Datez.xcodeproj
` 文件作为子项目添加(确保未启用Copy resources
) - 转到您的根项目设置。在“嵌入式二进制文件”下,单击“+”按钮并选择 `
Datez.framework
动机
本框架没有重新发明苹果已经构建的任何东西。在底层,它利用 Date
、Calendar
和 DateComponents
类来完成所有工作。它只是试图简化 Swift 开发者的 API。就这样。
在使用 RealmSwift 和 SwiftyJSON 亲身体验了使用优秀的 Swift API 的感受之后,我开始相信简洁的 Swift API 的重要性,以及它对我们生产力和压力水平的影响。
其他日期库有什么问题?
假设底层 Calendar
...:
我需要明确选择公历和伊斯兰教规,所以已经整合。
错误的日期计算:
我看到的框架大多数都对一个月中的天数的数量做出了假设,或者硬编码小时数...等等。
作者
Mazyod (@Mazyod)
许可
Datez 以 MIT 许可发布。有关详细信息,请参阅 LICENSE。