2016-10-20 47 views
0

NSDate()给我很好的通用时间(非本地时间),这是完美的我的目的。我需要从此NSDate中提取日期组件(小时,分钟等),但下面的代码将时间转换为本地时间。如何提取给定的通用日期组件,而不将其更改为本地时区:从NSDate提取日期compnents忽略当地时间和时区

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) 

回答

2

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

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 
相关问题