如何获得另一个 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)!
我需要根据另一个 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)!