Как я могу изменить формат даты в Swift5 (ISO8601)? - PullRequest
0 голосов
/ 11 марта 2020

Я искал часы, но я нашел только такие образцы:


let dateString = "2020-03-02T19:37:00.073+01:00" //get from api
let dateFormatter = ISO8601DateFormatter()

dateFormatter.formatOptions = [
    .withTimeZone,
    .withInternetDateTime,
    .withFractionalSeconds
]

print(dateFormatter.date(from: dateString) ?? "no valid date")

//2020-03-02 18:37:00 +0000

Как мне отформатировать эту дату следующим образом:

02.03.2020 или 02.03.2020 18:37 (Немецкий формат)

Метод ISO8601DateFormatter () не имеет свойства dateStyle?

Как отобразить форматированную дату в метке?

Спасибо

Ответы [ 2 ]

0 голосов
/ 12 марта 2020

спасибо за вашу помощь

вот мое решение:

func convertDateFormater(_ date: String) -> String
{
    let dateFormatter = ISO8601DateFormatter()
    dateFormatter.timeZone = TimeZone.current
    dateFormatter.formatOptions = [.withFractionalSeconds, .withTimeZone, .withInternetDateTime]
    let date = dateFormatter.date(from: date)

    let dateFormatter2 = DateFormatter()
    dateFormatter2.dateFormat = "dd.MM.yyyy"
    return  dateFormatter2.string(from: date!)
}

0 голосов
/ 11 марта 2020

У меня есть эта ссылка для PO C Salesforce, они используют этот формат: https://salesforce.stackexchange.com/questions/108896/cannot-deserialize-instance-of-datetime-from-value-string-value

И у меня есть расширения для использования:

extension Date {
    func salesforceFormat() -> String {
        let dateformat = DateFormatter.salesforceDateFormatter
        return dateformat.string(from: self)
    }
}

extension String {
    func fromSalesforceDateToDate() -> Date? {
        let dateformat = DateFormatter.salesforceDateFormatter
        return dateformat.date(from: self)
    }
}

extension DateFormatter {
    static var salesforceDateFormatter: DateFormatter {
        let dateformat = DateFormatter()
        dateformat.calendar = Calendar(identifier: .iso8601)
        dateformat.locale = Locale(identifier: "en_US_POSIX")
        dateformat.timeZone = TimeZone(secondsFromGMT: 0)
        dateformat.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSXXXXX"
        return dateformat
    }
}

Затем вы можете конвертировать из строки в дату и из даты в строку. Расширения - не лучшее решение, но работают, например.

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