Swift5 如何将日期时间字符串转换为指定自定义格式显示
Swift 5 日期格式转换实现方案
你需要先将原字符串格式的日期解析为Date对象,再将Date对象格式化为目标格式的字符串即可,使用DateFormatter是官方推荐的标准实现方式,适配性比直接切割字符串更高。
完整实现代码
// 初始化输入格式解析器,匹配你原有的日期字符串格式 let inputFormatter = DateFormatter() inputFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss" // 固定locale避免系统语言变化导致解析失败 inputFormatter.locale = Locale(identifier: "en_US_POSIX") // 请根据你原日期字符串的时区调整,示例为东八区北京时间 inputFormatter.timeZone = TimeZone(identifier: "Asia/Shanghai") // 初始化输出格式解析器,匹配你需要的展示格式 let outputFormatter = DateFormatter() outputFormatter.dateFormat = "dd/MM/yyyy HH:mm" outputFormatter.locale = Locale(identifier: "en_US_POSIX") // 时区和输入保持一致避免出现时差 outputFormatter.timeZone = inputFormatter.timeZone // 执行转换后赋值 if let originDate = inputFormatter.date(from: order.dateTime) { let targetDateStr = outputFormatter.string(from: originDate) cell.lbl_Date.text = "DATA: \(targetDateStr)" } else { // 解析异常兜底逻辑,可根据需求自行修改 cell.lbl_Date.text = "DATA: \(order.dateTime)" }
注意事项
- 你问题中示例目标输出的年份写为
2012属于笔误,上述代码会自动匹配原日期的2021输出,如有特殊需求可以自行调整逻辑。 - 必须设置
en_US_POSIX类型的locale,否则当用户设备系统语言为非英语时,DateFormatter可能出现解析异常、乱码等问题。 - 时区配置必须和你原始日期字符串的所属时区保持一致,否则会出现时间偏移,比如原始日期是UTC时间的话,将
timeZone改为TimeZone(secondsFromGMT: 0)即可。
内容的提问来源于stack exchange,提问作者bircastri
相关产品推荐
相关产品推荐

