将完整日期转换为小时和分钟 - Swift

mad*_*ram 0 nsdate ios swift

我试图在这里做一些非常简单的事情,但失败了。我只想将带有完整日期的字符串转换为小时和分钟,有人能看到我哪里出错了吗?以下代码打印 nil

let dateString2 = "2018-03-11 20:43:05 +0000"

let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd hh:mm:ss +zzzz"
dateFormatter.locale = Locale.init(identifier: "en_GB")


let dateObj = dateFormatter.date(from: dateString2)

dateFormatter.dateFormat = "hh:mm"
print("Dateobj: \(dateFormatter.string(from: dateObj!))")
Run Code Online (Sandbox Code Playgroud)

Dáv*_*tor 5

你的dateFormat字符串有缺陷。hh是 12 小时时间格式,当您明确收到 24 小时时间格式时,您需要使用HH. 即使zzzz有效,+0000 实际上应该由z. 在大多数情况下使用固定时间格式时,您还应该localeen_US_POSIX.

let dateString2 = "2018-03-11 20:43:05 +0000"

let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss z"
dateFormatter.locale = Locale.init(identifier: "en_US_POSIX")

let dateObj = dateFormatter.date(from: dateString2)
dateFormatter.dateFormat = "HH:mm"
print("Dateobj: \(dateFormatter.string(from: dateObj!))")
Run Code Online (Sandbox Code Playgroud)

输出:

20:43