如何获得另一个 NSDate 当天特定时间的 NSDate 表示?

How can I get an NSDate representation of a specific hour in the day of another NSDate?

我需要根据另一个 NSDate 获得一天中特定时间的 NSDate。例如,如果我有一个 NSDate 代表 2015 年 5 月 10 日的已知时间,我需要能够在 2015 年 5 月 10 日获得一个代表 01:00 的 NSDate

我将如何在 Swift 中执行此操作?

您可以使用 NSCalendar 从您的初始 NSDate 获得 NSDateComponents。然后,您可以更改 NSDateComponents 中的各个字段。最后,使用 NSCalendar 转换回 NSDate.

例如:

let now = NSDate()
var components = NSCalendar.currentCalendar().components(.CalendarUnitYear | .CalendarUnitMonth | .CalendarUnitDay | .CalendarUnitHour | .CalendarUnitMinute, fromDate: now)

println(now)

components.hour = 1
components.minute = 0
components.second = 0

let updated = NSCalendar.currentCalendar().dateFromComponents(components)
println(updated)

NSCalendar 已经有一个名为 dateBySettingHour() 的方法,它允许您:

let inputDate = NSDate()
let resultDate = NSCalendar.currentCalendar().dateBySettingHour(1, minute: 0, second: 0, ofDate: inputDate, options: nil)!