如何创建一个自定义日期而不是当前日期的NSDate对象?例如,我想创建一个var的昨天或2天前。
您应该使用
NSCalendar
计算日期。例如,在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,toDate: NSDate(),options: [])
或者获取一个月的第一个月,您可以从当前日期获取日期,月份和年份,将日期调整为月份的第一天,然后创建一个新的日期对象。在Swift 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 class reference。
但我建议不要对日期对象进行任何手动调整,通过调整一些时间间隔,即每天的秒数的倍数(例如24 * 60 * 60)。如果你只是添加一些时间间隔,但是对于日期计算,你真的想使用日历对象,以避免夏令时等问题。