1
Ich habe ein Array zu konvertieren, calendarFromDateArr
, die sich wie folgt:wie Array String bisher swift 3
["2017-10-30T07:41:00", "2017-10-30T11:23:00", "2017-10-30T11:48:00", "2017-11-10T00:00:00", "2017-11-13T19:43:00", "2017-12-01T00:00:00", "2017-12-31T00:00:00"]
ich diesen Code verwende aber dateObjects
sind nil
.
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ssZ"
let dateObjects = self.calendarFromDateArr2.flatMap { dateFormatter.date(from: $0) }
print(dateObjects)
var dateObjects = [Date]()
let dateFormatter = DateFormatter()
for date in self.calendarFromDateArr2 {
dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ssZZZZZ"
let dateObject = dateFormatter.date(from: date)
dateObjects.append(dateObject!)
print(dateObjects)
}
Ich verwende diesen Code auch Daten sind jedoch nil
.
Neben der 'Z' zu entfernen und die' timeZone'-Eigenschaft, wie cldrr unten weist darauf hin, auch 'set locale' auf' en_US_POSIX', zB 'dateFormatter.locale = Gebietsschema (Bezeichner:" en_US_POSIX ")', gemäß [Technical Q & A 1480] (https://developer.apple.com/library/content/qa/qa1480/_index.html). – Rob
Auch, in der zweiten Hälfte Ihrer Frage nicht verwandt, vermeiden Sie das Setzen von "dateFormat" innerhalb der Schleife. Die Einstellung von "dateFormat" (oder die Instanziierung neuer Datumsformatierer) ist sehr kostspielig, also vermeiden Sie es in einer Schleife, wenn Sie können. In diesem Fall stellen Sie einfach die Formatzeichenfolge vor der Schleife ein und Sie sind golden. – Rob