Преобразовать строку с часовым поясом в дату

-2

У меня есть этот тип строки и вы хотите преобразовать ее на сегодняшний день

"2017-05-27T00: 00: 00,000 + 0400"

но ни одна из этих форм не преобразует его на сегодняшний день

"YYYY-MM-dd'T'HH: мм: SSSZ"

"YYYY-MM-dd'T'HH: мм: SSSX"

Теги:
date
timezone
swift3

4 ответа

2
Лучший ответ

Вы забыли добавить ss течение нескольких секунд, поэтому правильный formate должен быть 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 Добро пожаловать, приятель :)
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

Если у вас больше форматов даты, просто добавьте их в расширения.

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
    Вопрос не в том, чтобы изменить строку в другой формат.
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
    Какое это имеет отношение к вопросу?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню