Я обнаружил странное поведение DateFormatter на iOS 13.4.1, в то время как 12-часовой стиль даты установлен в настройках iOS и теперь PM.
class DateFormatterTest {
static var dateFormatter: DateFormatter = {
let formatter = DateFormatter()
formatter.dateFormat = "yyyy-MM-dd HH:mm:ss.SSS Z"
return formatter
}()
static let testDate = Date()
static func printDateString() {
print(dateFormatter.string(from: testDate))
}
}
DateFormatterTest.printDateString()
// prints 2020-08-01 15:32:58.765 +0300 when 24h date style set in the iOS 13.4.1 system
// prints 2020-08-01 3:32:58.765 +0300 when 12h date style set in the iOS 13.4.1 system (EXPECTED: same as when 24h date style set.)
Обратите внимание, что при тестировании с использованием Игровая площадка. Независимо от того, какой стиль даты установлен в MacOS, игровая площадка всегда печатает «2020-08-01 15: 32: 58.765 +0300», что правильно.
Вопрос в том, как получить правильную отформатированную строку даты в формат «гггг-ММ-дд ЧЧ: мм: сс.ССС Z» при 12-часовом стиле времени, установленном на iOS 13.4.1
Я не тестировал другие версии iOS, поэтому прокомментируйте, если вы видите (или не видите) такое же поведение на другой iOS версии