日期输出不正确

时间:2017-10-27 15:27:49

标签: swift

在我的快速应用程序中,我收到了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就像我期待的那样。我尝试过使用不同的最终格式,但结果是一样的。我做错了什么?

2 个答案:

答案 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"
相关问题