2016-08-06 20 views
-1

Ich versuche, das Datum zu erhalten, dass ich in NSDateComponents eingestellt bin, aber es retting den einen Tag weniger als das tatsächliche Datum.dateFromComponents gibt falsches Datum

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 

Antwort

3

die Zeitzone ein mit calendar Objekt UTC, und der Versuch Date vom calendar zu bekommen.

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

Es ist Ihnen die UTC Zeitzone geben, nur das Datum konvertieren, indem NSDateFormatter wie diese usning, werden Sie Ihre Antwort erhalten -

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

Danke. Aber ich denke, ich muss Timezone einstellen, um das richtige Datum zu bekommen. –

+0

ja sollten Sie timeZone mit UTC-Wert einstellen –