如果我创建一个 Date()
来获取当前日期和时间,我想从中创建一个新日期但具有不同的小时、分钟和零秒,最简单的方法是什么用 swift 做吗?我一直在寻找很多使用“获取”而非“设置”的示例。
最佳答案
请注意,对于使用夏令时的区域设置,在时钟更改日,某些时间可能不存在或可能出现两次。下面的两种解决方案都返回一个 Date?
并使用强制展开。您应该在您的应用中处理可能的 nil
。
Swift 3、4、5 和 iOS 8/OS X 10.9 或更高版本
let date = Calendar.current.date(bySettingHour: 9, minute: 30, second: 0, of: Date())!
swift 2
使用 NSDateComponents
/DateComponents
:
let gregorian = NSCalendar(calendarIdentifier: NSCalendarIdentifierGregorian)!
let now = NSDate()
let components = gregorian.components([.Year, .Month, .Day, .Hour, .Minute, .Second], fromDate: now)
// Change the time to 9:30:00 in your locale
components.hour = 9
components.minute = 30
components.second = 0
let date = gregorian.dateFromComponents(components)!
请注意,如果您调用 print(date)
,打印的时间为 UTC。这是同一时刻,只是在与您不同的时区中表示。使用 NSDateFormatter
将其转换为本地时间。
关于swift - 如何在 Swift 中更改当天的小时和分钟?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36073704/