从忽略本地时间和时区的 NSDate 中提取日期组件

Extract date components from a NSDate ignoring local time and time zones

NSDate() 给了我很好的通用时间(不是本地时间),这非常适合我的目的。我需要从此 NSDate 中提取日期组件(小时、分钟等),但下面的代码将时间转换为本地时间。如何提取给定通用日期的组件而不将它们更改为本地时区:

let date = NSDate()
print(date) // Prints 2016-10-20 20:10:20 +0000 (Good Universal Time) 
let calendar = Calendar.current
let hour = calendar.component(.hour, from date as Date)
print(hour) // Prints 16 (Bad local hour)

您必须在日历上设置时区。

let date = NSDate()
print(date) // Prints 2016-10-20 20:10:20 +0000 (Good Universal Time)
var calendar = Calendar.current
calendar.timeZone = TimeZone(abbreviation: "UTC")!
let hour = calendar.component(.hour, from: date as Date)
print(hour) // Prints 20