Преобразование строки в дату возвращает ноль - PullRequest
0 голосов
/ 19 февраля 2019

Я пытаюсь преобразовать свою строку в дату, используя статический форматировщик даты.Когда я выполняю вызов stringToDate() с помощью переменных ниже, возвращается значение nil.

Я проверял предыдущие посты об этой проблеме, где люди говорят, что это из-за dateformatter locale илиtimeZone.Однако в данном случае это, похоже, не проблема.

Кто-нибудь знает, в чем проблема может быть в этом случае?Мой код ниже:

import Foundation

class DateHelper {

    private static let dateFormatter: DateFormatter = {
        let df = DateFormatter()
        df.dateFormat = "yyyy-MM-dd hh:mm:ss"
        df.locale = Locale(identifier: "en_GB")
        df.timeZone = TimeZone.current
        return df
    }()

    static func stringToDate(str: String, with dateFormat: String) -> Date? {
        dateFormatter.dateFormat = dateFormat
        let date = dateFormatter.date(from: str)

        return date
    }
}

var myDate = Date()
var dateStr = "2019-02-19T17:10:08+0000"

print(DateHelper.stringToDate(str: dateStr, with: "MMM d yyyy")) // prints nil

Ответы [ 2 ]

0 голосов
/ 19 февраля 2019

Похоже, ваша строка в формате ISO8601.Используйте ISO8601DateFormatter , чтобы получить экземпляр даты.Вы можете использовать ISO8601DateFormatter.Options для анализа вариантов форматов ISO8601 .Для вашей строки,

Для Swift 4.2.1

let formatter = ISO8601DateFormatter()
let date = formatter.date(from: dateStr)
print(date!)

Должен вывести

"2019-02-19 17:10:08 +0000\n"

0 голосов
/ 19 февраля 2019

Ваш формат даты не соответствует введенной вами дате.Попробуйте этот код:

print(DateHelper.stringToDate(str: dateStr, with: "yyyy-MM-dd'T'HH:mm:ssZZZZZ"))

Надеюсь, это поможет.

...