SwiftDate
是Github上开源的,使用Swift语言编写的NSDate封装库,可以很方便的在Swift中处理日期,比如日期创建,比较,输出等。
特性
- 支持数学运算符进行日期计算(比如myDate + 2.week + 1.hour)
- 支持比较运算符(比如<,>,==,<=,>=)
- 快速获取/修改日期各部分内容(比如获取或修改日期中的月份)
- 提供通用格式化输出或自定义的格式化输出
- 提供一系列.toString方法
- 提供简便的方法获取yesterday,tomorrow等
依赖
- iOS 8.0+ / Mac OS X 10.10+
- Xcode 6.4
- Swift 1.2
支持Swift2.0版本,地址在文末的Github段落中
使用
CocoaPods安装SwiftDate
我们需要通过CocoaPods安装SwitDate,如果你还没有安装cocoapods,可以通过如下命令安装
$ gem install cocoapods |
然后在你的Xcode项目中的Podfile文件中,添加如下内容:
source 'https://github.com/CocoaPods/Specs.git' |
最后,执行如下命令安装
$ pod install |
创建日期
- 通过解析字符串创建
let date_custom = NSDate.date(fromString: "2015-07-26", format: DateFormat.Custom("YYYY-MM-DD")) |
- 通过指定日期各部分创建
let date_from_components = NSDate.date(refDate: nil, year: 2014, month: 01, day: nil, hour: nil, minute: nil, second: nil, tz: "UTC") |
- 通过String类的toDate方法创建
let date = "2015-07-26".toDate(formatString: "YYYY-MM-DD") |
- 通过NSDate的静态方法创建
let todayDate = NSDate.today() |
获取日期中年月日等信息
我们可以通过NSDate的以下属性获取
.year |
修改日期
var date = NSDate() |
日期运算
let date = NSDate() |
时区转换
let date = NSDate() //本地时区 |
日期比较
我们可以通过数学运算符比较
let date1 = NSDate.date(fromString: "2015-07-26", format: DateFormat.Custom("YYYY-MM-DD")) |
还可以通过NSDate的以下一些方法来比较
let isInRange : Bool = date1.isInTimeRange("11:00","15:00") |
.isToday() // true if represented date is today |
NSDate转换为字符串
let string = date.toString(format: DateFormat.Custom("YYYY-MM-DD")) |
也可以在转换方法中指定NSDateFormatterStyle
let string = date.toString(dateStyle: .ShortStyle timeStyle:.LongStyle relativeDate:true) |
还可以通过以下方法转换为特定的字符串
.toISOString() // DateFormat.ISO8601 |
最后我们还可以输出相对时间的格式,比如输出”2 hours ago”
var d = NSDate()-2.hour |
SwiftDate 是个非常强大的日期/日历框架,完全使用 Swift 编写。SwiftDate 部分是基于 QuantLib 的,著名的定量金融学库,SwiftDate 对金融应用非常友好,同时也有强大的商业日历功能。
创建日期:
var d1 = Date(year : 2014, month : 5, day : 15)
var d2 = Date(string : "2014-05-15")
简单的日期计算:
d1 = d1 + 1
if (d2 > d1) {
...
}
复杂的日期转换函数:
var d = Date(string : "2014-04-30")
d.addMonths(1) // returns "2014-05-30"
d.addMonths(1, rollDay : RollDay.ThirtyOne) // returns "2014-05-31"
d + "1M" // returns "2014-05-30"
日历
var cal = USNYSECalendar()
var d1 = Date(string : "2014-07-03")
var nbd = cal.nextBizDay(d1) // returns "2014-07-07" - skipped over 4th of July!
日期计算:
var dc = Actual360()
dc.dayCountFraction(Date(string : "2014-01-31"), date2: Date(string : "2014-02-28"))
项目主页:
Github
SwiftDate
SwiftDate支持Swift 2.0版本
参考链接:
1.https://www.aswifter.com/2015/07/26/use-swiftdate/
2.http://www.faceye.net/search/180350.html#bottom-ad