2017-05-30 83 views
-2

我有這種類型的字符串,並希望將其轉換爲日期轉換字符串時區迄今爲止

「2017-05-27T00:00:00.000 + 0400」

但沒有該格式化將其轉換爲迄今爲止

「YYYY-MM-dd'T'HH:MM:SSSZ」

「YYYY-MM-dd'T'HH:MM:SSSX」

回答

2

你忘了加ss爲秒鐘,正確甲應該是yyyy-MM-dd'T'HH:mm:ss.SSSZ

let dateFormatter = DateFormatter() 
dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSZ" 
let date = dateFormatter.date(from: "2017-05-27T00:00:00.000+0400") 
+0

是愚蠢的錯誤。謝謝 –

+1

@NarekSimonyan歡迎隊友:) –

1

你可以根據做這樣

let dateString = "2017-05-27T00:00:00.000+0400" 
    let formachanger = DateFormatter() 
    formachanger .dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSZ" 
    if let dateFromString = formachanger .date(from: dateString) { 
     formachanger .dateFormat = "yyyy-MM-dd HH:mm" 
     let stringFromDate = formachanger .string(from: dateFromString) 
    } 
+0

問題不在於將字符串更改爲不同的格式。 – rmaddy

0

試試這個功能

 func getGMTDateFrom(String string : String) -> Date? { 

      let dateFormatter = DateFormatter() 
      dateFormatter.dateFormat = "EEE, dd MMM yyyy hh:mm:ss zz" 
      let dateObj = dateFormatter.date(from: string) 
      return dateObj 
     } 

更改日期格式的需要。

+0

這與這個問題有什麼關係? – rmaddy

2

您的錯誤是seconds丟失。所以正確的格式應該是:yyyy-MM-dd'T'HH:mm:ss.SSSZ。您也可以使用延長用於此目的:

extension String { 
    var toCustomDate: Date { 
     return Date.Formatter.customDate.date(from: self)! 
    } 
} 

extension Date { 
    struct Formatter { 
     static let customDate: DateFormatter = { 
      let formatter = DateFormatter() 
      formatter.locale = Locale(identifier: "en_US_POSIX") 
      formatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSZ" 
      return formatter 
     }() 
    } 

    var customDate: String { 
     return Formatter.customDate.string(from: self) 
    } 
} 

let str = "2017-05-27T00:00:00.000+0400" 
let date = str.toCustomDate 

如果您有更多的日期格式,然後把它們添加到擴展。