DateFormatter возвращает ноль на определенных устройствах - PullRequest
0 голосов
/ 06 октября 2018

Я использую следующий код для преобразования строки в дату:

// Input is "06-10-18, 01:30 pm"

func convertStringToDate(string: String) -> Date {
    let formatter = DateFormatter()
    formatter.dateFormat = "dd-MM-yyyy, hh:mm a"
    return formatter.date(from: string)!
}

Это прекрасно работает на симуляторах и моих устройствах, однако происходит сбой при возврате для пары клиентских устройств.

Я попытался выяснить, что не так, заставив его вернуть строку с даты, и на клиентских устройствах он возвращает это:

"06-10-18, 13:30"

Почему он возвращается по-разному на нескольких устройствах?

1 Ответ

0 голосов
/ 06 октября 2018

Возвращенная дата верна, вы можете проверить это, используя свойство .timeIntervalSince1970.Происходит следующее: когда вы печатаете дату (которая на самом деле представляет собой просто TimeInterval, он же Double, конкретный момент времени , независимо от календаря или часового пояса ), она печатает описание свойство, с текущими настройками устройства.

Чтобы напечатать дату, используя текущую локаль, используйте этот метод экземпляра:

let date = convertStringToDate(string: "06-10-18, 01:30 pm")
print(date.description(with: Locale(identifier: "en_US_POSIX")))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...