2015-09-22 258 views
0

如何使用Swift將Sep 15, 2015, 20:49:00轉換爲2015-09-15T20:49:00?我從Parse獲取date對象,但需要將其轉換爲其他格式。將日期字符串轉換爲NSDate?

編輯被標記DUPLICATE AFTER:

我使用這個:

let time = "Sat Sep 19 2015 19:03:47 GMT+0000 (UTC)" 

let dateFormatter = NSDateFormatter() 
dateFormatter.dateFormat = "yyyy'-'MM'-'dd'T'HH':'mm':'ss.SSS'Z'" 
let date = dateFormatter.dateFromString(listenTime) 

...並獲得nil。那麼,我做錯了什麼?

+0

嘗試這樣的:.dateFormat = 「EEE ' '' LLL 'DD' 'YYYY' 'HH:MM:SS' GMT + 0000(UTC)'」 你還需要指定日曆NSCalendarIdentifierISO8601,時區「GMT」和區域設置「en_US_POSIX」 –

+0

您可以發表一個答案嗎?我錯了。必須是時區問題。 – chicobermuda

+0

您輸入UTC的時間可能是您輸入的UTC時間對應的當地時間 –

回答

1
let time = "Sat Sep 19 2015 19:03:47 GMT+0000 (UTC)" 
let df = NSDateFormatter() 
df.calendar = NSCalendar(calendarIdentifier: NSCalendarIdentifierISO8601) 
df.locale = NSLocale(localeIdentifier: "en_US_POSIX") 
df.timeZone = NSTimeZone(abbreviation: "GMT") 
df.dateFormat = "EEE LLL dd yyyy HH:mm:ss' GMT+0000 (UTC)'" 
if let date = df.dateFromString(time) { 
    df.dateFormat = "yyyy-MM-dd'T'HH:mm:ss" 
    let stringFromDate = df.stringFromDate(date) // "2015-09-19T19:03:47" 
} 
+0

沒有必要引用日期格式的空格。只有應被視爲文字的字母。 – rmaddy

+0

我通常不會,但在字符串的末尾,有必要忽略gmt後綴,我沒有找到該特定格式的相應字母 –

+0

我的意思是說:'「EEE LLL dd yyyy HH:mm :ss'GMT + 0000(UTC)'「' – rmaddy