在我的快速应用程序中,我收到了iso8601日期(2017-10-27T10:15:23Z)。我将以下内容用于DateFormatter dateFormat
yyyy-MM-dd'T'HH:mm:ssZ
然后我接受它并使用另一种格式来获得小时/分钟。
h:mm a
代码是这个
let formatter = DateFormatter()
formatter.locale = Locale(identifier: "en_US_POSIX")
formatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ssZ"
let nsDate = formatter.date(from: date)
formatter.dateFormat = "h:mm a"
print(formatter.string(from: nsDate!))
日期输出
5:15而不是10:15就像我期待的那样。我尝试过使用不同的最终格式,但结果是一样的。我做错了什么?
答案 0 :(得分:1)
5:15而不是10:15就像我期望的那样。
如果我试试,我会得到4:15。哪个指向问题 - 时区。我离UTC已经六个小时了,你显然距离UTC还有五个小时。
DateFormatter
使用您当地的时区,除非您告诉它使用其他内容。由于您的原始日期字符串是UTC,因此您需要告知日期格式化程序使用UTC:
formatter.timeZone = TimeZone(identifier: "UTC")
然后你会得到“10:15”。
答案 1 :(得分:-1)
因此,如果我正确理解了这个问题,那么您正试图将时间转换为24小时,对吧? 尝试更改
datasource:
type: com.zaxxer.hikari.HikariDataSource
hikari:
minimum-idle: 5
maximum-pool-size: 10
idle-timeout: 30000
connection-test-query: SELECT 1
为:
formatter.dateFormat = "h:mm a"