Swift iOS 日期操作:NSDate、NSDateFormatter

1、日期(NSDate)

[objc] view plaincopy在CODE上查看代码片派生到我的代码片
 
  1. // 1、初始化  
  2. // 初始化一个当前时刻对象  
  3. var now = NSDate()  
  4. // 初始化一个明天当前时刻对象  
  5. var tomorrow = NSDate(timeIntervalSinceNow: 24*60*60)  
  6. // 初始化一个昨天当前时刻对象  
  7. var yestoday = NSDate(timeInterval: -24*60*60, sinceDate: now)  
  8. // 初始化一个 2001-01-01 08:00:00 1小时后的时刻对象  
  9. var date1 = NSDate(timeIntervalSinceReferenceDate: 3600)  
  10. // 初始化一个 1970-01-01 08:00:00 1小时后的时刻对象  
  11. var date2 = NSDate(timeIntervalSince1970: 3600)  
  12.   
  13. // 2、获取时间描述  
  14. var dateDescription = now.description  
  15.   
  16. // 3、获取时间间隔  
  17. // 获取今天到明天的时间间隔  
  18. var interval1 = tomorrow.timeIntervalSinceDate(now)  
  19. // 获取今天到明天的时间间隔  
  20. var interval2 = tomorrow.timeIntervalSinceNow  
  21. // 获取 2001-01-01 08:00:00 到今天的时间间隔  
  22. var interval3 = now.timeIntervalSinceReferenceDate  
  23. // 获取 1970-01-01 08:00:00 到今天的时间间隔  
  24. var interval5 = now.timeIntervalSince1970  
  25.   
  26. // 4、随机返回一个不可能达到的未来时间、过去时间  
  27. date1 = NSDate.distantFuture() as NSDate  
  28. date2 = NSDate.distantPast() as NSDate  
  29.   
  30. // 5、时间相加  
  31. // 返回一个后天当前时刻对象(在明天基础上再加上一天的时间)  
  32. var theDayAfterTomorrow = tomorrow.dateByAddingTimeInterval(24*60*60)  
  33.   
  34. // 6、时间比较  
  35. // 比较两个时间对象是否相同返回布尔值(由于精度问题,isTheSameDate 为 false)  
  36. var isTheSameDate = theDayAfterTomorrow.isEqualToDate(NSDate(timeInterval: 2*24*60*60, sinceDate: now))  
  37. // 返回两个时间中较早的一个时间  
  38. var earlierOne = now.earlierDate(tomorrow)  
  39. // 返回两个时间中较晚的一个时间  
  40. var laterOne = now.laterDate(tomorrow)  
  41. // 比较两个时间对象是否相同并返回 NSComparisonResult 值  
  42. var compareResult = now.compare(tomorrow)  

2、日期转换(NSDateFormatter)

[objc] view plaincopy在CODE上查看代码片派生到我的代码片
 
  1. // 方式1:用已有日期格式进行转换  
  2. var dateFormatter1 = NSDateFormatter()  
  3. dateFormatter1.dateStyle = NSDateFormatterStyle.MediumStyle  
  4. dateFormatter1.timeStyle = NSDateFormatterStyle.MediumStyle  
  5. var now = NSDate()  
  6. // Date 转 String  
  7. var nowString = dateFormatter1.stringFromDate(now)      // Mar 24, 2015, 9:00:00 PM  
  8. // String 转 Date  
  9. now = dateFormatter1.dateFromString(nowString)!  
  10.   
  11. // 方式2:自定义日期格式进行转换  
  12. var dateFormatter2 = NSDateFormatter()  
  13. dateFormatter2.dateFormat = "yyyy-MM-dd HH:mm:ss"  
  14. // Date 转 String  
  15. nowString = dateFormatter2.stringFromDate(now)          // 2015-03-24 21:00:00  
  16. // String 转 Date  
  17. now = dateFormatter2.dateFromString(nowString)!  

3、扩展

NSDateFormatter 中提供了修改月份、星期等字符的方法,具体有兴趣的话可以参考官方文档。
关于日历(NSCalendar)、日期组件(NSDateComponents)的详细介绍后续补充。

4、结语

NSDate Class Reference

NSDateFormatter Class Reference

posted @ 2016-03-22 16:19  沧海珠泪  阅读(1845)  评论(0编辑  收藏  举报