2016-09-29 3 views
-1
let date = "2016-05-31T19:00:00+02:00" 

let dateFormatterWithTime: DateFormatter { 
    let df = DateFormatter() 
    df.dateFormat = "yyyy-MM-dd'T'HH:mm:ss Z" 
    return df 
} 
let thisIsNil = dateFormatterWithTime.date(from: date) 

フォーマッタに問題がありますか? http://nsdateformatter.com/によれば、有効な日付が返されますが、これは030です。日付を文字列に変換します

+3

パターンのUTCオフセット指定文字の前にスペースがあります。あなたの価値にはそのスペースがありません。それはすべてが間違っているわけではないかもしれませんが、それは私が最初にやるべきことです。 –

+0

あなたは簡単にその理由を説明できますか? – Godfather

+2

ロケールを 'en_US_POSIX'に設定する理由はありません。 – rmaddy

答えて

0

formatterは「yyyy-MM-dd'T'HH:mm:ssZ」である必要があります。 マークはゾーンのためのものですZは、あなたの日付ではなく、あなたのフォーマットで第二とゾーンの間には隙間がないことをそのためのコードは

let date = "2016-05-31T19:00:00+02:00" 

    var dateFormatterWithTime: DateFormatter { 
     let df = DateFormatter() 
     df.dateFormat = "yyyy-MM-dd'T'HH:mm:ssZ" 
     return df 
    } 
    let thisIsNil = dateFormatterWithTime.date(from: date) 

    print("date \(thisIsNil)") 

出力ログでなければなりませんギャップ

があります:

date Optional(2016-05-31 17:00:00 +0000) 
関連する問題