DateFormatter. Странное поведение на iOS 13.4.1 при 12-часовом стиле даты, установленном в настройках iOS - PullRequest
0 голосов
/ 01 августа 2020

Я обнаружил странное поведение 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 версии

1 Ответ

0 голосов
/ 01 августа 2020

Проблема устранена. Необходимо указать языковой стандарт.

formatter.locale = Locale(identifier: "en_US_POSIX")
...