Swift 将带有时区的字符串转换为日期
我有这种类型的字符串,希望将其转换为日期 “2017-05-27T00:00:00.000+0400” 但是没有一个格式化程序将其转换为日期 “yyyy-MM-dd'HH:MM:SSSZ”Swift 将带有时区的字符串转换为日期,swift,date,swift3,timezone,Swift,Date,Swift3,Timezone,我有这种类型的字符串,希望将其转换为日期 “2017-05-27T00:00:00.000+0400” 但是没有一个格式化程序将其转换为日期 “yyyy-MM-dd'HH:MM:SSSZ” “yyyy-MM-dd'HH:MM:SSSX”您忘记添加ss几秒钟,因此正确的格式应该是yyy-MM-dd'HH:MM:ss.SSSZ let dateFormatter = DateFormatter() dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.S
“yyyy-MM-dd'HH:MM:SSSX”您忘记添加
ss
几秒钟,因此正确的格式应该是yyy-MM-dd'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)
}
试试这个功能
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
}
根据需要更改日期格式。您的错误是缺少
秒数。所以正确的格式应该是:yyyy-MM-dd'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 Welcome mate:)这与问题有什么关系?问题不是将字符串更改为其他格式。