DateFormatter устанавливает AM / PM по умолчанию - PullRequest
0 голосов
/ 05 декабря 2018

Я пытаюсь преобразовать текущее время и дату в формат отметки времени.Поскольку служба получает этот формат для отметок времени:

2018-26-11T11:38:00Z

, я решил использовать такой формат:

yyyy-M-dd'T'H:mm:ss'Z'

Но, когда я использую форматер даты для его преобразования, яполучаю нежелательный тег AM / PM в конце по умолчанию:

let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-M-dd'T'H:mm:ss'Z'"
let currentTimeAndDate = Date()
let timeStamp = dateFormatter.string(from: currentTimeAndDate)
// Prints "2018-12-05T12:58:38 PMZ"

Как я могу удалить этот AM / PM по умолчанию в конце строки?

Ответы [ 2 ]

0 голосов
/ 05 декабря 2018
  1. Используйте yyyy-MM-dd'T'HH:mm:ssX для формата.
  2. Установите timeZone для форматера TimeZone(secondsFromGMT: 0).
  3. Установите для локали специальный языковой стандарт en_US_POSIX: Locale(identifier: "en_US_POSIX")

Обновленный код:

let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ssX"
dateFormatter.timeZone = TimeZone(secondsFromGMT: 0)
dateFormatter.locale = Locale(identifier: "en_US_POSIX")
let currentTimeAndDate = Date()
let timeStamp = dateFormatter.string(from: currentTimeAndDate)

Или избегайте всего этого и используйте ISO8601DateFormatter.

0 голосов
/ 05 декабря 2018
  • Установите фиксированный языковой стандарт en_US_POSIX"

    dateFormatter.locale = Locale(identifier: "en_US_POSIX")
    
  • Или используйте специальный форматер ISO8601

    let dateFormatter = ISO8601DateFormatter()
    let currentTimeAndDate = Date()
    let timeStamp = dateFormatter.string(from: currentTimeAndDate)
    
...