2016-07-24 1 views
1

fajerTimeNSDateに変換しようとしています。私がプロジェクトをコンパイルするとき、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

の可能性のある重複した[iphoneにNSDateに文字列を変換するには?](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" は、あなたの場合は、日付文字列のパターン

  • と一致している必要があり、あなたの日付文字列は、時刻のみが含まれている、まだ、あなたの日付 フォーマッタは、日付のみ

  • 含まれてい日付形式のため enter image description here

参考サイト:

    それは日付を返すようdateFormatter.date()日付にキャストする必要はありませんを使用して
  • http://nsdateformatter.com/
関連する問題