iOS-Swift:如何将日期字符串转换为另一种格式的日期字符串
在iOS Swift中将"Aug 15, 2022"转换为"Monday, August 15, 2022"格式的方法
要完成这种日期字符串格式转换,核心是通过DateFormatter先把原始字符串解析成Date对象,再将Date重新格式化为目标样式,具体步骤如下:
步骤1:配置解析用的日期格式化器
首先需要定义一个DateFormatter,匹配原始字符串"Aug 15, 2022"的格式:
dateFormat设为"MMM dd, yyyy",其中MMM对应缩写月份(如Aug),dd对应两位数日期,yyyy对应四位年份- 强制设置
locale为en_US_POSIX,避免系统地区设置干扰解析(比如设备设为中文地区时,默认locale会导致英文月份解析失败)
步骤2:将原始字符串解析为Date对象
调用date(from:)方法将输入字符串转换为Date,注意处理解析失败的情况(比如输入格式不匹配时会返回nil)。
步骤3:配置目标格式的日期格式化器
再定义一个DateFormatter,设置目标格式"EEEE, MMMM dd, yyyy":
EEEE对应完整星期名(如Monday)MMMM对应完整月份名(如August)- 同样可以设置
locale为en_US_POSIX,确保输出为英文样式。
完整代码示例
let inputString = "Aug 15, 2022" // 1. 配置解析用的DateFormatter let parserFormatter = DateFormatter() parserFormatter.dateFormat = "MMM dd, yyyy" parserFormatter.locale = Locale(identifier: "en_US_POSIX") // 2. 解析字符串为Date guard let date = parserFormatter.date(from: inputString) else { print("日期解析失败,请检查输入格式") return } // 3. 配置格式化用的DateFormatter let outputFormatter = DateFormatter() outputFormatter.dateFormat = "EEEE, MMMM dd, yyyy" outputFormatter.locale = Locale(identifier: "en_US_POSIX") // 4. 生成目标格式字符串 let outputString = outputFormatter.string(from: date) print(outputString) // 输出:Monday, August 15, 2022
注意事项
dateFormat的格式符是大小写敏感的,必须严格匹配输入/输出字符串的格式(比如mm代表分钟,MM代表月份,不要混淆)- 始终处理解析失败的情况(
date(from:)返回nil),避免因输入格式错误导致崩溃 - 如果需要适配多语言,可以根据需求调整
locale,比如设置为Locale.current会跟随系统地区输出对应语言的日期样式
内容的提问来源于stack exchange,提问作者Alex171
相关产品推荐
相关产品推荐

