swift - 如何在 Swift 中更改当天的小时和分钟?

标签 swift nsdate

如果我创建一个 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/

相关文章:

ios - NSDate格式扩展中的EXC_BAD_ACCESS

ios - 如何将 UIDatePicker 日期秒值设置为 00?

swift - 如何将我的日期设置为昨天?

swift - 如何实现 swift3 函数并完成等待被动函数调用?喜欢 Facebook sdk

ios - 如何在两个 UIViewControllers 上工作,一个在 swift 中,另一个在 objective-c 中..?

html - Swift - 在 UiWebView 中加载本地 Html

objective-c - 对日期字符串或对象的 NSArray 进行排序

iphone - 使用 NSDateFormatter 生成 NSDate 产生 nil NSDate 值

Swift 使用 nil 合并运算符简化可选 Int 到 String 的转换

ios - SKAction 未在 SKSpriteNode 上运行