2017-03-13 4 views
3

swift 3の文字列をdateに変換する際に問題があります。これは私のコードで、変換中はゼロの値を返します。swiftのdateからstringへの変換は返されません。

let dateFormatter = DateFormatter() 
dateFormatter.dateFormat = "EEE, dd MMM yyyy hh:mm:ss +zzzz" 
dateFormatter.locale = Locale.init(identifier: "bg_BG") 

let recdate = dateFormatter.date(from:"Fri, 10 Mar 2017 15:03:03 +0530")!;` 

答えて

6

時間と時間帯に間違った書式指定子を設定しました。これを使用します。何時間15. HHありませんので、

dateFormatter.dateFormat = "EEE, dd MMM yyyy HH:mm:ss Z" 
dateFormatter.locale = Locale(identifier: "en_US") 
  • hhは12時間形式を意味代わり
  • +zzzz
  • は無効なタイムゾーン指定子です。金曜日はブルガリア語で Friに短縮されていない限り、異なるコードで指摘したようにあなたは、まず、問題のカップルを持っている
+1

はこの** E、D MMMのYYYYのHHしようとしたSSのZ **と** EEEを、MMMのYYYYのHHをddは:MM:SSのZ **、まだ機能していません。まだ致命的なエラーが発生しています:オプションの値をアンラープしている間に予期せぬエラーが発生しました。 2017-03-13 08:52:50.557530 Dubber [1851:1317294]致命的なエラー:アンラッピング中に予期せず見つからないオプション値** – nikhil

+2

@nikhil 'dateFormatter.locale = Locale.current'、なぜ" bg_BG "が動作しないのか分かりません。 – chengsam

+2

ありがとうございましたありがとうございます@天使とコードは別です – nikhil

1

英語ロケールを使用し、Z代わり

  • を使用して、あなたが24を読み取るためにHHを使用する必要があります〜時間。しかし、ロケールも指定しています。つまり、「単語」部分は英語ではなくブルガリア語でなければなりません。既定の言語のままにすると、正常に動作するようです:

    let dateFormatter = DateFormatter() 
    dateFormatter.dateFormat = "EEE, dd MMM yyyy HH:mm:ss +zzzz" 
    //dateFormatter.locale = Locale.init(identifier: "bg_BG") 
    let recdate = dateFormatter.date(from:"Fri, 10 Mar 2017 15:03:03 +0530")! 
    

    あなたがブルガリアの日と月の名前を使用した場合、あなたのフォーマットが動作するはずです。 MM:

    dateFormatter.date(from:"нд, 10 март 2017 15:03:03 +0530") 
    
  • +2

    はい、ありがとうございました@David Berry – nikhil

    関連する問題