2016-08-06 3 views
-1

Я пытаюсь получить дату, когда меня установили в NSDateComponents, но она удаляется на один день меньше, чем фактическая дата.dateFromComponents дает неправильную дату

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 

ответ

3

Установите часовой пояс с calendar объекта UTC, и попытаться получить Date от calendar.

calendar.timeZone = NSTimeZone(name: "UTC")! 
1

Это дает вам UTC часового пояса, просто конвертировать даты по usning 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) 

enter image description here

+0

Спасибо. Но я думаю, мне нужно установить Timezone, чтобы получить правильную дату. –

+0

да, вы должны установить timeZone со значением UTC –