2017-01-13 6 views
0

bekommen Kann mir jemand helfen, aktuelle UTC Datum Zeit zu erhalten.
Ich versuche:Wie UTC für Datum in Midnigs in Swift

let cal = NSCalendar(calendarIdentifier: NSCalendarIdentifierGregorian)! 
     let components = cal.components([.Day , .Month, .Year ], fromDate: NSDate()) 
     let refDate = cal.dateFromComponents(components) 

Aber ich bin immer 1/12/2017 23:00:00 Dies ist scheint UTC Ortszeit.
Ich möchte UTC für das aktuelle Datum um Mitternacht bekommen.

In der Datenbank speichere ich Datum als Anzahl von Sekunden, aber auf dem Server ist es als 1/13/2017 00:00:00 gespeichert und in swift bekomme ich 1/12/2017 23:00:00, also kann ich nicht Werte erhalten, da sie unterschiedlich sind Ich verstehe nicht, was ich tun muss, um dieselbe UTC zu erhalten.

In Datenbank Ich speichere Datum als lange Anzahl von Sekunden in Swift Ich bekomme es durch UInt64(floor(refDate!.timeIntervalSince1970)) aber Datum ist falsch.

Antwort

0

Sie müssen hour setzen, minute und second Eigentum von NSDateComponents-0

let cal = NSCalendar(calendarIdentifier: NSCalendarIdentifierGregorian)! 
cal.timeZone = NSTimeZone(name: "UTC")! 
let components = cal.components([.Day , .Month, .Year,.Hour, .Minute, .Second], fromDate: NSDate()) 
components.hour = 0 
components.minute = 0 
components.second = 0 
let refDate = cal.dateFromComponents(components) 

Oder von iOS 8 auch startOfDayForDate

let cal = NSCalendar(calendarIdentifier: NSCalendarIdentifierGregorian)! 
cal.timeZone = NSTimeZone(name: "UTC")! 
let refDate = cal.startOfDayForDate(NSDate()) 
print(refDate) 
können