繁体   English   中英

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

[英]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表示。 在大多数情况下,使用固定时间格式时,还应将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!))")

输出:

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))")
}

如何在 swift 4

[英]How to skip the rounding of the time when it is coming exact hours and minutes in swift 4

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM