невозможно создать дату из формата "гггг-мм-дд'т'хч: мм: сс + 00: 00" - PullRequest
0 голосов
/ 02 июля 2018

Я хочу конвертировать из строки в дату. Использую ли я правильный формат здесь с "гггг-ММ-дд'ТХЧ: мм: сс + 00: 00" ?

extension String {
    func format(_ format:String) -> String {
        var date: Date?
        let dateFormatterGet = DateFormatter()
        let dateFormatterOutput = DateFormatter()
        dateFormatterGet.dateFormat = "yyyy-MM-dd'T'HH:mm:ss+00:00"
        dateFormatterOutput.dateFormat = format
        if let d = dateFormatterGet.date(from: self) {
            date = d
        }
        return dateFormatterOutput.string(from: date!)
    }
}

extension Date {
    func string(with format: String) -> String {
        let dateFormatter = DateFormatter()
        dateFormatter.dateFormat = format
        return dateFormatter.string(from: self)
    }
}

1 Ответ

0 голосов
/ 02 июля 2018

Вопрос в строке:

dateFormatterGet.dateFormat = "yyyy-MM-dd'T'HH:mm:ss+00:00"

+00:00 необходимо заменить на xxxx, например:

dateFormatterGet.dateFormat = "yyyy-MM-dd'T'HH:mm:ssxxxx"

Ваш код станет:

func format(_ format:String) -> String {
    var date: Date?
    let dateFormatterGet = DateFormatter()
    let dateFormatterOutput = DateFormatter()
    dateFormatterGet.dateFormat = "yyyy-MM-dd'T'HH:mm:ssxxxx"
    dateFormatterOutput.dateFormat = format
    if let d = dateFormatterGet.date(from: self) {
        date = d
    }
    return dateFormatterOutput.string(from: date!)
}

Примечание : здесь я предполагаю, что используемая вами строка даты будет содержать часовой пояс как + xx: xx (например, +02: 00) и так далее. Однако для другого формата вам нужно использовать другое число x (используется маленькое x, если часовой пояс не содержит Z):

  1. x -> -08, + 0330
  2. xx -> -0800
  3. xxx -> -800, -075254
  4. xxxx -> -8: 00, -07: 52: 54

Если часовой пояс содержит Z, то мы используем капитал X.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...