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

时间:2017-08-30 21:44:26

标签: ios swift date-formatting

当用户有24小时的时间时,我只是试图转动Date对象"在他们的iPhone上启用了一个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"    

所以它最初将其转换为预期的输出,但最终的最终变量是最终的? 2017-08-30 22:00:00 UTC

1 个答案:

答案 0 :(得分:2)

尝试更改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设备上用户的时间设置的影响。