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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 15:57:50