2017-07-30 10 views
-1

に文字列を日付に変換する私はDate に変更するコードを以下の形式の文字列で日付を持っているが、私は、日付形式があることが必要nilスウィフト

let addedDate = "Tue, 25 May 2010 12:53:58 +0000" 
let formatter = DateFormatter() 
formatter.dateFormat = "dd MM YYYY" 
let date1 = formatter.date(from: addedDate) 
print("DATE \(date1)") 

enter image description here

+2

'dateFormat'は' addedDate'の形式とまったく同じではないことに気付きましたか? – vadian

+1

もし私がここで尋ねる理由を知っているのであれば... –

答えて

2

取得していますあなたが変換しようとしている文字列ではなく、返す形式ではない

so

formatter.dateFormat = "dd MM YYYY" 

は、日付にあなたの文字列(addedDateString)を形質転換する必要が

formatter.dateFormat = "E, d MMM yyyy HH:mm:ss Z" 
+0

その形式で日付を表示するには、別のフォーマッタを設定する必要があります。https://stackoverflow.com/a/42231620をご覧ください。/285190 – Flexicoder

+0

また、ロケールを英語に設定する必要があります。 – Sulthan

0

すべきですか? (addedDate)それから、あなたはあなたが望むフォーマットを使用してString(dateString)に変換することができます。注:StringからDateへの変換が失敗した場合、addedDateはnilです。

import UIKit 

let addedDateString = "Tue, 25 May 2010 12:53:58 +0000" 

// Transform addedDateString to Date 
let addedDateFormatter = DateFormatter() 
addedDateFormatter.dateFormat = "E, d MMM yyyy HH:mm:ss Z" 

if let addedDate = addedDateFormatter.date(from: addedDateString) { 

    // Converstion String to Date return a valid Date 
    print ("addedDate", addedDate) 
    let dateFormatter = DateFormatter() 
    dateFormatter.dateFormat = "dd MM YYYY" 
    let dateString = dateFormatter.string(from: addedDate) 
    print("Date: ", dateString) 

} else { 

    // addedDate == nil value when conversion String to Date failed 
    print ("addedDateString not valid") 

} 

機能を追加することもできます。このようなもの:

func transformStringDate(_ dateString: String, 
         fromDateFormat: String, 
         toDateFormat: String) -> String? { 

    let initalFormatter = DateFormatter() 
    initalFormatter.dateFormat = fromDateFormat 

    guard let initialDate = initalFormatter.date(from: dateString) else { 
     print ("Error in dateString or in fromDateFormat") 
     return nil 
    } 

    let resultFormatter = DateFormatter() 
    resultFormatter.dateFormat = toDateFormat 

    return resultFormatter.string(from: initialDate) 
} 

print (transformStringDate("Tue, 25 May 2010 12:53:58 +0000", 
          fromDateFormat: "E, d MMM yyyy HH:mm:ss Z", 
          toDateFormat: "dd MM YYYY") ?? "Error")