将 24 小时制日期对象转换为 12 小时制日期对象

Convert 24 Hour Time Date Object into 12 Hour Time Date Object

我只是想将用户在 iPhone 上启用“24 小时制”的日期对象转换为“12 小时制”日期对象。

我已经按照之前关于此问题的线程中所述进行了尝试,但我没有运气:

初始 finalDate 对象:日期 2017-08-30 22:00:00 UTC

 let dateFormatter = DateFormatter()
 dateFormatter.locale = Locale(identifier:"en_US")
 dateFormatter.dateFormat = "MM/dd/yyyy h:mm a"
 let dateString = dateFormatter.string(from: finalDate)
 let theFinalConvertedDate = dateFormatter.date(from: dateString)

我最终得到的结果:

    theFinalConvertedDate   Date? 2017-08-30 22:00:00 UTC

我不确定为什么会发生这种情况,因为 dateString 打印出来是:

"08/30/2017 5:00 PM"    

所以它最初确实将其转换为预期的输出,但 FinalConvertedDate 最终变成了 Date? 2017-08-30 22:00:00 协调世界时

尝试更改 Date 对象的格式毫无意义。 Date 没有格式。您只能通过使用 DateFormatDate 转换为 String.

来获得某种所需格式的字符串

记录 Date 始终以固定格式显示 UTC 时区的日期值。

您只需要:

let dateFormatter = DateFormatter()
dateFormatter.locale = Locale(identifier:"en_US_POSIX")
dateFormatter.dateFormat = "MM/dd/yyyy h:mm a"
let dateString = dateFormatter.string(from: finalDate)

dateString是你关心的值。这将采用所需的格式。

请注意,您需要使用 en_US_POSIX 以确保结果不受用户在 iOS 设备上的时间设置的影响。