2016-07-24 137 views
1

我在嘗試將fajerTime轉換爲NSDate。當我編譯項目dateValuenil。任何想法如何解決這個問題?如何將字符串轉換爲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

的可能的複製[如何字符串轉換爲NSDate的在iphone?(http://stackoverflow.com/questions/6288371/how-to-convert-string-to-nsdate-in-iphone ) –

+0

顯示'fajerTime'的內容 – Arsen

+0

問題可能是'fajerTime'的格式。看起來'fajerTime'是一個時間字符串,例如'12:34',而日期格式化器被配置爲接受包含月份,日期和年份的字符串,例如, '24-07-2016'。您需要根據「MM-dd-yyyy」格式格式化「fajerTime」,或者配置日期格式化程序以接受一段時間,例如, 'dateFormatter.dateFormat =「hh:mm」'。 –

回答

0

問題似乎是格式fajerTime。看起來像fajerTime是時間字符串,例如12:34,而日期格式化器被配置爲接受包含月,日和年的字符串,例如, 24-07-2016

您需要格式化fajerTime以包括年份,月份和日期以及時間。還要配置日期格式化程序以接受完整的日期和時間。

假設prayer0是一個數組,您還需要使用joinWithSeparator將這些元素組合到一個字符串中。

例如

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

請按照例如(斯威夫特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) 

請記住:

  • 日期格式例如「YYYY-MM-DD HH:MM:SS Z」 必須日期字符串模式

  • 在你的情況 格式化只包含日期匹配,你的日期字符串只包含時間,但是,你的約會

  • 當使用dateFormatter.date()就沒有必要將其轉換爲日期,因爲它返回一個日期: enter image description here

有用網站的日期格式: