2017-07-29 1 views
0

Derzeit bin ich mit diesem Code konvertiert Zeit eine Zeit von String zu Date konvertieren:von String to Date stürzt auf Simulator nur

public static func dateFromTime(_ time: String) -> Date { 
    let formatter = DateFormatter() 
    formatter.dateFormat = "k:mm" 
    formatter.locale = NSLocale.current 

    return formatter.date(from: time)! 
} 

Dies funktioniert auf meinem Gerät, aber es stürzt auf dem Simulator. Beide benutzen das 12-Stunden-Format von dem, was ich sehen kann.

Die Zeichenfolge, die diese Methode empfängt, wenn sie abstürzt, ist "5:30 AM".

Jeder andere Grund, warum dieser Code auf Simulator und nicht Gerät abstürzen kann?

+0

Wie lautet die Konsolenmeldung, wenn Ihre App abstürzt? das wird Ihr Problem ansprechen, trotzdem empfehle ich Ihnen dringend, ein echtes Gerät für Tests zu verwenden, da der Simulator immer fehlerhaft ist und nicht die Wahrheit sagt wie ein echtes Gerät;) – cubycode

Antwort

1

Ihr Code ist wegen des richtigen Datumsformats abgestürzt!

Für, "5:30 AM""h:mm a" statt "k:mm" verwenden.

Um jegliche Art von Abstürzen zu vermeiden, aktualisieren Sie Ihren Code wie folgt. .

public static func dateFromTime(_ time: String) -> Date { 
     let formatter = DateFormatter() 
     formatter.dateFormat = "h:mm a" 
     formatter.locale = NSLocale.current 
     if let date = formatter.date(from: time) 
     { 
      return date 
     } 
     print("Invalid arguments ! Returning Current Date . ") 
     return Date() 
    } 
1

kleine k für 24 Stunden Format & Kapital K für 12 Stunden (am/pm). Wenn Sie eine formatierte Zeit von 12 Stunden erwarten, sollten Sie das Format K verwenden, um dies zu formatieren. link here

Hoffe es hilft.