Swift 3 timezone Problem
Scheint es setDefaultTimeZone
Methode ist nicht mehr verfügbar in NSTimeZone
. Weiss einer einen Ersatz für diese?
Hinzufügen von einige details:
In meiner appDelegate.swift, ich habe
NSTimeZone.default = TimeZone(abbreviation: "BST")!
und es funktioniert wie vorgesehen, ich denke, weil in allen anderen Dateien, die ich bekommen NSTimeZone auf diesen Wert gesetzt
Nun, In meiner Utils, ich habe diese Methode
static func getDate(_ dateStr: String) -> Date {
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd"
//dateFormatter.timeZone = TimeZone(abbreviation: "GMT")
let date = dateFormatter.date(from: dateStr)!
return date
}
Also sagen wir, ich gebe es ein "2016-10-07", gibt es mir zurück 2016-10-06 23:00 Uhr. Warum? Es wird fixiert, wenn Sie kommentieren Sie die Zeile im obigen code. Ich will nicht von dieser Linie überall.
Beispielsweise in einem anderen Teil meines Projektes, die ich verwendet habe CVCalendar(https://github.com/Mozharovsky/CVCalendar). Es bietet eine Funktion für immer convertedDate wie so
func didSelectDayView(_ dayView: DayView, animationDidFinish: Bool) {
selectedDay = dayView
selectedDate = dayView.date.convertedDate()!
}
Die gleiche wie zuvor passiert hier auch...ist, dass ich auf 2016-10-08 und es selectedDate wird hier 2016-10-07 23:00 Uhr.
Und die NSTimeZone.Standardmäßig druckt Europe/London überall.
Hat jemand eine Idee, warum das passiert ist?
developer.apple.com/reference/foundation/nstimezone finden Sie in diesem Dokument
Dies ist, was ich wurde vor der Verwendung Swift3 in AppDelegate.swift. NSTimeZone.setDefaultTimeZone(Zeitzone(Abkürzung: "BST")!)
Ich habe auch diese Dokumentation Lesen, aber mein Xcode fehl zu sagen Geben NSTimeZone hat kein Mitglied setDefault.... haben Sie es ausprobiert?
var UTC = NSTimeZone(name: "UTC") NSTimeZone.defaultTimeZone = UTC versuchen, diese
InformationsquelleAutor AmrataB | 2016-10-07
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen, diese
NSTimeZone
und konvertieren Sie Sie dann inTImeZone
stattdessen kann man sich direkt erstellen-Objekt mitTimeZone(abbreviation:)
wie meine Antwort.Ich weiß, aber es ist etwas einfach zu verstehen
InformationsquelleAutor Jitendra Modi
Versuchen wie diese.
Edit:, habe ich dieses
TimeZone
mitDateFormatter
und Holen Sie sich die richtigeBST
Uhrzeit mit Datum.Wenn Sie festlegen möchten
defaultTimeZone
fürNSTimeZone
Objekt dann in Swift 3 können Sie festlegen, wie diese.Durch diese Einstellung
NSTimeZone.default = TimeZone(abbreviation: "BST")!
Sie werden nur default-time-zone nicht verwenden, und Wenn Sie dateFormatter-spezifische Zeit-zone, mit der es andere weisen, kann es verwendet werden, Ihre system-oder lokalen.Sind Sie bekommen, was ich zu sagen versuche?
Sie müssen nicht angeben, die Zeitzone, die separat für DateFormatter. Es erfasst den Sie auf NSTimeZone default-oder Standard-Zeitzone. Mein Problem war, dass vor swift 3, wird es verwendet, um zu überlegen, Sommerzeit, wenn Sie drucken Zeitzone, es gibt dieses Europe/London (GMT+1) - offset-3600 (Tageslicht) und damit alles was für mich gearbeitet. Aber jetzt, es hat begonnen, die Rückkehr Europe/London oder einfach nur eine Stunde minus UTC. Dieser brach alles. So, ich setze meinen Standard auf UTC heute so, dass es nicht brechen wieder nach einem Monat.
Ich bin mir nicht sicher, was Sie sagen, ist richtig, da habe ich zuerst versucht auf set default time zone Spielplatz mit BST und versuchen Sie dann, um die aktuelle Zeit, ist es nicht die BST-es war meine aktuelle Zeitzone nach der Einstellung der Zeitzone mit dateFormatter werde ich in der Lage zu Holen Sie sich die aktuellen BST Zeit, Kann sein, dass du miss Verständnis-check richtig wieder.
InformationsquelleAutor Nirav D
Wenn Sie mit dem Kalender dann
//* erstellen Kalender-Objekt *
//* definieren Sie Kalender-Komponenten zu verwenden sowie der Zeitzone zu UTC *
Hinweis : Wenn Sie möchten, um das Datum einzustellen formatter Zeitzone, können Sie Folgen Sie den oben genannten Ansatz :
InformationsquelleAutor Wolverine