You need to enable JavaScript to run this app. Xcode中罗马尼亚语环境下DateFormatter日期字符串转换崩溃问题
优惠活动
大模型
产品
解决方案
定价
更多

Xcode中罗马尼亚语环境下DateFormatter日期字符串转换崩溃问题

问题成因

DateFormatter 默认会跟随系统当前的语言区域(Locale)解析日期,你代码中使用的格式符 MMM 对应月份的本地化缩写,输入的日期字符串中的月份是英文缩写 Jun(六月),当系统切换为罗马尼亚语时,罗马尼亚语的六月缩写为 Iun,解析器无法匹配到对应月份就会返回nil,第五行的强制解包操作直接触发崩溃。

修复方案
  • 如果你解析的是固定格式的机器生成日期(比如服务端返回的固定英文格式日期),直接给日期格式化器指定固定的英文Locale,避免受系统语言影响,同时去掉强制解包加安全校验,修复后代码如下:
let dateOfProcedure = "03. Jun 2021 15:12:00"
let dateFormatter = DateFormatter()
// 指定固定Locale为en_US_POSIX,专门用于解析固定格式的非本地化日期
dateFormatter.locale = Locale(identifier: "en_US_POSIX")
dateFormatter.dateFormat  = "dd. MMM yyyy HH:mm:ss"
dateFormatter.timeZone = .current
// 用可选绑定做安全判断,避免解析失败崩溃
if let examDate = dateFormatter.date(from: dateOfProcedure) {
    // 解析成功后的业务逻辑
    print(examDate)
} else {
    // 解析失败的兜底逻辑
    print("日期格式无效")
}
  • 如果你需要适配多语言的用户输入日期,不要手写固定dateFormat,优先使用系统预设的日期格式,会自动根据当前系统语言匹配对应格式:
dateFormatter.dateStyle = .medium
dateFormatter.timeStyle = .medium

内容的提问来源于stack exchange,提问作者Dipesh Pokhrel

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.17 19:45:00