2016-07-24 37 views
1

Ich versuche fajerTime zu NSDate zu konvertieren. Wenn ich das Projekt kompiliere, ist die dateValuenil. Irgendeine Idee, wie Sie dieses Problem beheben können?Wie konvertiert man einen String in NSdate?

if prayerCommingFromAdan.id == 0 && prayerCommingFromAdan.ringToneId != 0{ 
    // NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(YourClassName.methodOfReceivedNotification(_:)), name:"NotificationIdentifier", object: nil) 

    let fajerTime = "\(prayer0.time[0...1]):\(prayer0.time[3...4])" as String 
    var dateFormatter = NSDateFormatter() 
    dateFormatter.dateFormat = "MM-dd-yyyy" 
    dateFormatter.timeZone = NSTimeZone.localTimeZone() 

    // convert string into date 
    let dateValue = dateFormatter.dateFromString(fajerTime) as NSDate! 
    print(dateValue) 

    var dateComparisionResult:NSComparisonResult = NSDate().compare(dateValue) 

    if dateComparisionResult == NSComparisonResult.OrderedDescending { 
     addNotificationAlarm(year, month: month, day: day, hour: prayer0.time[0...1], minutes: prayer0.time[3...4], soundId: prayerCommingFromAdan.ringToneId, notificationBody: "It is al fajr adan")      
    } 
+0

Mögliche Duplikat [Wie String NSDate in iphone konvertieren?] (Http://stackoverflow.com/questions/6288371/how-to-convert-string-to-nsdate-in-iphone) –

+0

Inhalt von 'fajerTime' anzeigen – Arsen

+0

Das Problem könnte das Format' fajerTime' sein. Es sieht so aus als wäre "fajerTime" eine Zeitfolge, z. "12: 34", während der Datumsformatierer so konfiguriert ist, dass er eine Zeichenkette akzeptiert, die einen Monat, einen Tag und ein Jahr enthält, z. '24-07-2016'. Sie müssen entweder fajerTime gemäß dem Format "MM-TT-JJJJ" formatieren oder den Datumsformatierer anderweitig so konfigurieren, dass er eine Zeit akzeptiert, z. 'dateFormatter.dateFormat =" hh: mm "'. –

Antwort

0

Das Problem scheint das Format fajerTime zu sein. Es sieht so aus, als wäre fajerTime eine Zeitkette, z.B. 12:34, während der Datumsformatierer so konfiguriert ist, dass er eine Zeichenfolge akzeptiert, die einen Monat, einen Tag und ein Jahr enthält, z. 24-07-2016.

Sie müssen fajerTime formatieren, um das Jahr, den Monat und den Tag sowie die Uhrzeit anzugeben. Konfigurieren Sie außerdem den Datumsformatierer, um das vollständige Datum und die Uhrzeit zu akzeptieren.

Angenommen, prayer0 ist ein Array, müssen Sie die Elemente auch in eine Zeichenfolge mit joinWithSeparator kombinieren.

z.B.

let hours = prayer0.time[0...1].joinWithSeparator("") 
let minutes = prayer0.time[3...4].joinWithSeparator("") 
let fajerTime = "\(month)-\(day)-\(year) \(hours):\(minutes)" 
var dateFormatter = NSDateFormatter() 
dateFormatter.dateFormat = "MM-dd-yyyy hh:mm" 
dateFormatter.timeZone = NSTimeZone.localTimeZone() 

// convert string into date 
let dateValue = dateFormatter.dateFromString(fajerTime) as NSDate! 
0

Bitte folgen Beispiel (Swift 3):

let dateStr = "2016-01-15 20:10:01 +0000" 
let dateFormatter = DateFormatter() 
dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss Z" 
let myDate = dateFormatter.date(from: dateStr) 

Beachten Sie:

  • Datumsformat z.B. "Yyyy-MM-dd HH: mm: ss Z" muss das Datum Zeichenfolge Muster entsprechen

  • In Ihrem Fall Ihre Datum Zeichenfolge nur Zeit enthält, noch Ihr Datum Formatierer enthält nur Datum

  • Wenn mit dateFormatter.date() gibt es keine Notwendigkeit ist es dem aktuellen Stand zu werfen, wie es ein Datum zurückgibt: enter image description here

Hilfreiche Website für Datumsformate:

Verwandte Themen