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

Swift中日期字符串格式转换:yyyy-MM-dd转dd/MM/yyyy

解决Swift日期字符串格式转换问题

嘿,我来帮你搞定这个问题~你现在遇到的date返回nil的情况,核心原因是解析日期时用错了格式!

你的输入日期字符串是yyyy-MM-dd格式(比如2017-09-20),但你给DateFormatter设置的dateFormat却是dd-MM-yyyy——系统根本没法把2017-09-20识别成日-月-年的格式,自然就返回nil啦。

给你整理好的正确代码,一步到位:

// 假设你的原始日期字符串
let dateString = item["data"] as! String

// 第一步:用原始格式解析出Date对象
let dateFormatter = DateFormatter()
// 这里要和输入字符串的格式完全匹配!
dateFormatter.dateFormat = "yyyy-MM-dd"
// 建议加上这个locale,避免不同系统区域设置影响解析
dateFormatter.locale = Locale(identifier: "en_US_POSIX")
guard let date = dateFormatter.date(from: dateString) else {
    print("日期解析失败")
    return
}

// 第二步:设置目标格式,转换成新的字符串
dateFormatter.dateFormat = "dd/MM/yyyy"
let formattedDateString = dateFormatter.string(from: date)
print(formattedDateString) // 输出:20/09/2017

几个关键细节要注意:

  • 解析日期时,dateFormat必须和输入字符串的格式完全一致,包括分隔符(比如这里的-);
  • 添加en_US_POSIX locale是个好习惯,能避免因为系统语言/区域设置不同导致的解析失败(比如有些地区会把MM识别成其他格式);
  • 用guard let做可选绑定,比强制解包更安全,能处理解析失败的情况。

内容的提问来源于stack exchange,提问作者Junior Sanches

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 03:07:35