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_POSIXlocale是个好习惯,能避免因为系统语言/区域设置不同导致的解析失败(比如有些地区会把MM识别成其他格式); - 用
guard let做可选绑定,比强制解包更安全,能处理解析失败的情况。
内容的提问来源于stack exchange,提问作者Junior Sanches
相关产品推荐
相关产品推荐

