将 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
没有格式。您只能通过使用 DateFormat
将 Date
转换为 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 设备上的时间设置的影响。
我只是想将用户在 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
没有格式。您只能通过使用 DateFormat
将 Date
转换为 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 设备上的时间设置的影响。