iOS17中日期转字符串出现\U202f Unicode字符问题求助
问题分析与解决
问题根源
- 结果中出现
PM,说明你实际使用的日期格式字符串大概率包含了a(AM/PM标记符),而非你所说的"yyyy-MM-dd HH:mm:ss"——可能是DateFormate枚举对应值的rawValue配置错误,比如误写为"yyyy-MM-dd hh:mm:ss a"(小写hh是12小时制,搭配a会显示AM/PM)。 \U202f是Unicode窄不换行空格,由DateFormatter根据系统本地化设置自动插入,用于分隔时间与AM/PM标记。
解决方案
方案1:修正日期格式(不需要AM/PM时)
确认DateFormate枚举中对应类型的rawValue严格为:
"yyyy-MM-dd HH:mm:ss"
(大写HH代表24小时制,不会生成AM/PM标记,自然也不会出现额外空格)
方案2:强制使用无本地化特殊字符的Locale(需要AM/PM时)
如果确实需要保留AM/PM标记,可给DateFormatter设置en_US_POSIX locale,避免插入本地化特殊空格:
func toString(formateType type: DateFormate) -> String { let dateFormatter = DateFormatter() dateFormatter.timeZone = TimeZone(abbreviation: "UTC") dateFormatter.locale = Locale(identifier: "en_US_POSIX") // 添加此行 dateFormatter.dateFormat = type.rawValue return dateFormatter.string(from: self) }
内容的提问来源于stack exchange,提问作者Jones
相关产品推荐
相关产品推荐

