Swift Note

兴趣是最好的老师

熟悉 Swift NSDate

时间是一个蛮常用的对象,所以无论哪种语言,都有专门处理时间的方法,而且方法都差不多其实。

swift的时间处理蛮简单,用 NSDate

//当前时间
let now = NSDate()  
//昨天
var yestoday = NSDate(timeInterval: -24*60*60, sinceDate: now)  
//明天
var tomorrow = NSDate(timeIntervalSinceNow: 24*60*60)  
//计算时间差
//某一天到今天的时间差
var difftime = tomorrow.timeIntervalSinceDate(now)  
var difftime2 = tomorrow.timeIntervalSinceNow  

//参考时间 对应 2001-01-01-00-00 UTC
var difftime3 = now.timeIntervalSinceReferenceDate  
//1970-01-01-00-00到现在的时间差
var nowTo1970 = now.timeIntervalSince1970  

时间格式

时间格式用 NSDateFormatter 方法来处理

let timeFormat = NSDateFormatter()  
timeFormat.dataStyle = NSDateFormatterStyle.FullStyle  
timeFormat.timeStyle = NSDateFormatterStyle.FullStyle

let timeString = timeFormat.stringFromDate(now)  
//"Thursday, June 23, 2016 at 2:01:04 PM China Standard Time"

默认的 NSDateFormatterStyle 只有几种

enum NSDateFormatterStyle : UInt {  
    case NoStyle
    case ShortStyle
    case MediumStyle
    case LongStyle
    case FullStyle
}

其中,默认的是 MediumStyle

本地化

本地化操作简单了很多了

timeFormat.locale =  NSLocale(localeIdentifier: "zh_CN")  

常用的 localeIdentifier 有 zhCN enUS en_HK 等,这里有个详细列表

自定义格式

Swift也可以用标准化的方法来自定义时间格式:

let swiftNoteTimeStyle = NSDateFormatter()  
swiftNoteTimeStyle.dateFormat = "yyyyMMddHHmmss"  
var time = swiftNoteTimeStyle.stringFromDate(now)  
//20160623140458

不多说了,详细看Unicode的超详细解释

获取独立时间部分

比如,单独获取年份、月、日等

let calendar = NSCalendar.currentCalendar()  
let calComponent = calendar.components([.Day,.Month,.Year], fromDate: now)  
let dateyear = calComponent.year  
//2016
let dateyear = calComponent.month  
//6
let dateyear = calComponent.day  
//23

嗯,还有一些高级用法,用到了再研究~

神飞

没有什么能够阻挡,我对自由的向往