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)
我正在尝试从 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)