Swift iOS 日期操作:NSDate、NSDateFormatter
1、日期(NSDate)
- // 1、初始化
- // 初始化一个当前时刻对象
- var now = NSDate()
- // 初始化一个明天当前时刻对象
- var tomorrow = NSDate(timeIntervalSinceNow: 24*60*60)
- // 初始化一个昨天当前时刻对象
- var yestoday = NSDate(timeInterval: -24*60*60, sinceDate: now)
- // 初始化一个 2001-01-01 08:00:00 1小时后的时刻对象
- var date1 = NSDate(timeIntervalSinceReferenceDate: 3600)
- // 初始化一个 1970-01-01 08:00:00 1小时后的时刻对象
- var date2 = NSDate(timeIntervalSince1970: 3600)
- // 2、获取时间描述
- var dateDescription = now.description
- // 3、获取时间间隔
- // 获取今天到明天的时间间隔
- var interval1 = tomorrow.timeIntervalSinceDate(now)
- // 获取今天到明天的时间间隔
- var interval2 = tomorrow.timeIntervalSinceNow
- // 获取 2001-01-01 08:00:00 到今天的时间间隔
- var interval3 = now.timeIntervalSinceReferenceDate
- // 获取 1970-01-01 08:00:00 到今天的时间间隔
- var interval5 = now.timeIntervalSince1970
- // 4、随机返回一个不可能达到的未来时间、过去时间
- date1 = NSDate.distantFuture() as NSDate
- date2 = NSDate.distantPast() as NSDate
- // 5、时间相加
- // 返回一个后天当前时刻对象(在明天基础上再加上一天的时间)
- var theDayAfterTomorrow = tomorrow.dateByAddingTimeInterval(24*60*60)
- // 6、时间比较
- // 比较两个时间对象是否相同返回布尔值(由于精度问题,isTheSameDate 为 false)
- var isTheSameDate = theDayAfterTomorrow.isEqualToDate(NSDate(timeInterval: 2*24*60*60, sinceDate: now))
- // 返回两个时间中较早的一个时间
- var earlierOne = now.earlierDate(tomorrow)
- // 返回两个时间中较晚的一个时间
- var laterOne = now.laterDate(tomorrow)
- // 比较两个时间对象是否相同并返回 NSComparisonResult 值
- var compareResult = now.compare(tomorrow)
2、日期转换(NSDateFormatter)
- // 方式1:用已有日期格式进行转换
- var dateFormatter1 = NSDateFormatter()
- dateFormatter1.dateStyle = NSDateFormatterStyle.MediumStyle
- dateFormatter1.timeStyle = NSDateFormatterStyle.MediumStyle
- var now = NSDate()
- // Date 转 String
- var nowString = dateFormatter1.stringFromDate(now) // Mar 24, 2015, 9:00:00 PM
- // String 转 Date
- now = dateFormatter1.dateFromString(nowString)!
- // 方式2:自定义日期格式进行转换
- var dateFormatter2 = NSDateFormatter()
- dateFormatter2.dateFormat = "yyyy-MM-dd HH:mm:ss"
- // Date 转 String
- nowString = dateFormatter2.stringFromDate(now) // 2015-03-24 21:00:00
- // String 转 Date
- now = dateFormatter2.dateFromString(nowString)!
3、扩展
NSDateFormatter 中提供了修改月份、星期等字符的方法,具体有兴趣的话可以参考官方文档。
关于日历(NSCalendar)、日期组件(NSDateComponents)的详细介绍后续补充。