Swift 如何从 NSDate 获取日、月和小时

How to fetch day, month and hour from NSDate in Swift

我有一个名为 reservationDate 的 NSDate 对象,我想从日期中获取 日、月和时 。但是,我得到了错误的价值观。我怎样才能得到这些值?

reservationDate 对象的值 预订日期 NSDate 2016-08-05 21:00:00 UTC 因此我希望每天收到 5 个,每小时收到 21 个,但是我每天收到 6 个,每小时收到 0 个。我应该期待其他东西吗?

let unitFlags: NSCalendarUnit = [.Hour, .Day, .Month, .Year]
let components = NSCalendar.currentCalendar().components(unitFlags, fromDate: reservationDate)
let day = components.day
let hour = components.hour

尝试使用 Calendar 对象和 UTC

设置时区
let unitFlags: NSCalendarUnit = [.Hour, .Day, .Month, .Year]
let calendar = NSCalendar.currentCalendar()
calendar.timeZone = NSTimeZone(name: "UTC")!
let components = calendar.components(unitFlags, fromDate: NSDate())
let day = components.day
let hour = components.hour

您还没有设置时区。请赋值 "UTC".

NSCalendar.currentCalendar().timeZone = NSTimeZone(name: "UTC")!
let currentDate = NSDate()
let dateFormatter = NSDateFormatter()
dateFormatter.dateStyle = NSDateFormatterStyle.FullStyle
var convertedDate = dateFormatter.stringFromDate(currentDate)
dateFormatter.dateFormat = "EEEE, MMMM dd, yyyy, HH:mm"
convertedDate = dateFormatter.stringFromDate(currentDate)