2016-10-19 12 views
0

StringからNSDateオブジェクトを作成しようとしています。私はあなたに見せるために文字列をハードコードしました。文字列にdateFromStringを呼び出すと、結果はnilになり、nilをアンラップするために例外が発生します。 以下に私のコードを貼り付けました。dateFromStringはnil、swiftを返します

これを行うにはどのようなアイデアが正しい方法ですか?

ありがとうございました!

let dateFormatter = NSDateFormatter() 
    dateFormatter.dateFormat = "dd/MM/yyyy hh:mm" 

    let timeToParse = "19/10/2016 16:10" 

    let date = dateFormatter.dateFromString(timeToParse) 
    //date = nil? 

    dateFormatter.dateFormat = "yyyy/MM/dd hh:mmZZZ" 
    let dateWithUTC = dateFormatter.stringFromDate(date!) 
+0

は、あなたが入力として、DD/MM/YYYYを指定し、年間 – CZ54

+0

のための4桁の数字を提供はい、私は間違った文字列で入力し、それはまだ一年に4桁の数字を持ったときにnilを私に与え – Goomey

答えて

3

あなたは時間hhを供給してきましたが、これは1〜12時間(少なくとも2桁)でフォーマットを期待しています。あなたは24時間形式(16:..)を使用している、あなたの代わりに指定HHを使用する必要があるため、例えば:

また
dateFormatter.dateFormat = "dd/MM/yyyy HH:mm" 

:optionals(!)の明示的なアンラップを使用して

  • 避け、例えば使用オプションのバインディング(if let ...)、
  • はSwift 3に移行することを検討してください。

など。 (スウィフト3)

let dateFormatter = DateFormatter() 
dateFormatter.dateFormat = "dd/MM/yyyy HH:mm" 

let timeToParse = "19/10/2016 16:10" 

if let date = dateFormatter.date(from: timeToParse) { 
    print(date) // 2016-10-19 16:10:00 +0000 
} 
+0

ああ、それはトリックでした!どうもありがとうございます :) – Goomey