DateFormatter默认设置AM / PM

时间:2018-12-05 18:07:19

标签: ios swift nsdateformatter

我正在尝试将当前时间和日期转换为时间戳格式。由于服务正在接收此时间戳格式:

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 :(得分:1)

  • 将语言环境设置为固定的en_US_POSIX"

    dateFormatter.locale = Locale(identifier: "en_US_POSIX")
    
  • 或使用专用的ISO8601格式化程序

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

答案 1 :(得分:-1)

  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