dateFromComponents 给出了错误的日期

dateFromComponents gives Wrong date

我正在尝试从 NSDateComponents 获取一个 Date 对象,但是 Calendar.date(from: Components) 给出的日期比我的原始组件中的日期早一天。

let calendar = NSCalendar(calendarIdentifier: NSCalendarIdentifierGregorian)
let dateComponents = calendar!.components([.Year , .Month , .Weekday, .Day], fromDate: NSDate())
dateComponents.year = 2015
dateComponents.month = 9
dateComponents.day = 1

po calendar!.dateFromComponents(dateComponents)
▿ Optional(2015-08-31 18:30:00 +0000)
  - Some : 2015-08-31 18:30:00 +0000

calendar 对象的时区设置为 UTC,并尝试从 calendar.

获取 Date
calendar.timeZone = NSTimeZone(name: "UTC")!

它给你 UTC 时区,只需像这样使用 NSDateFormatter 转换日期,你就会得到答案 -

let calendar = NSCalendar(calendarIdentifier: NSCalendarIdentifierGregorian)
let dateComponents = calendar!.components([.Year , .Month , .Weekday, .Day], fromDate: NSDate())
dateComponents.year = 2015
dateComponents.month = 9
dateComponents.day = 1


let df = NSDateFormatter()
df.dateFormat = "yyyy-MM-dd"
let datestring = df.stringFromDate(calendar!.dateFromComponents(dateComponents)!)
print(datestring)