我有這種類型的字符串,並希望將其轉換爲日期轉換字符串時區迄今爲止
「2017-05-27T00:00:00.000 + 0400」
但沒有該格式化將其轉換爲迄今爲止
「YYYY-MM-dd'T'HH:MM:SSSZ」
「YYYY-MM-dd'T'HH:MM:SSSX」
我有這種類型的字符串,並希望將其轉換爲日期轉換字符串時區迄今爲止
「2017-05-27T00:00:00.000 + 0400」
但沒有該格式化將其轉換爲迄今爲止
「YYYY-MM-dd'T'HH:MM:SSSZ」
「YYYY-MM-dd'T'HH:MM:SSSX」
你忘了加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")
你可以根據做這樣
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)
}
問題不在於將字符串更改爲不同的格式。 – rmaddy
試試這個功能
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
}
更改日期格式的需要。
這與這個問題有什麼關係? – rmaddy
您的錯誤是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
如果您有更多的日期格式,然後把它們添加到擴展。
是愚蠢的錯誤。謝謝 –
@NarekSimonyan歡迎隊友:) –