你应该使用NSCalendar https://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Classes/NSCalendar_Class/index.html用于计算日期。例如,在 Swift 3 中,今天前两天的日期是:
let calendar = Calendar.current
let twoDaysAgo = calendar.date(byAdding: .day, value: -2, to: Date())
或者在 Swift 2 中:
let calendar = NSCalendar.currentCalendar()
let twoDaysAgo = calendar.dateByAddingUnit(.Day, value: -2, toDate: NSDate(), options: [])
或者要获取该月的第一天,可以从当前日期开始获取日、月、年,将天调整为该月的第一天,然后创建一个新的日期对象。在斯威夫特 3 中:
var components = calendar.dateComponents([.year, .month, .day], from: Date())
components.day = 1
let firstOfMonth = calendar.date(from: components)]
或者在 Swift 2 中:
let components = calendar.components([.Year, .Month, .Day], fromDate: NSDate())
components.day = 1
let firstOfMonth = calendar.dateFromComponents(components)
里面有很多实用的功能NSCalendar
/Calendar
类,所以你应该进一步调查。请参阅NSCalendar 类参考 https://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Classes/NSCalendar_Class/index.html了解更多信息。
但我建议不要对日期对象进行任何手动调整,方法是按每天秒数的倍数的时间间隔进行调整(例如 24*60*60)。如果您只是添加一些时间间隔,那么该技术效果很好,但对于日期计算,您确实希望使用日历对象,以避免夏令时等引起的问题。