![](/img/trans.png)
[英]Convert from just the hours:minutes:timezone to a complete date in another TimeZone
[英]Converting a full date into just hours and minutes - 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!))")
您的dateFormat
字符串有缺陷。 hh
是12小时制,如果您明确收到24小时制,则需要使用HH
。 即使zzzz
起作用,+ 0000实际上也应该由z
表示。 在大多数情况下,使用固定时间格式时,还应将locale
为en_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!))")
输出:
20:43
您每小时需要HH
(24小时),而不是hh
(12小时)。 您还需要使用en_US_POSIX
的特殊语言环境,而不是en_GB
。 您还应该将Z
用作时区,而不是+zzzz
。
let dateString2 = "2018-03-11 20:43:05 +0000"
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss Z"
dateFormatter.locale = Locale(identifier: "en_US_POSIX")
if let dateObj = dateFormatter.date(from: dateString2) {
dateFormatter.dateFormat = "HH:mm" // or "hh:mm a"
print("Dateobj: \(dateFormatter.string(from: dateObj))")
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.