2016-09-29 100 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/它返回一個有效的日期,但我得到零將字符串日期解析爲日期

+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)