You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 08:57:04