Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 将带有时区的字符串转换为日期_Swift_Date_Swift3_Timezone - Fatal编程技术网

Swift 将带有时区的字符串转换为日期

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

我有这种类型的字符串,希望将其转换为日期

“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.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:)这与问题有什么关系?问题不是将字符串更改为其他格式。