Swift中DateTime2格式字符串转Date返回nil问题排查
问题解决:Swift中SQL Server DateTime2格式转Date对象返回nil的问题
你的代码存在几个关键错误,导致日期解析始终失败:
日期格式符误用
YYYY代表的是基于周的周年,而非常规公历年,应替换为yyyyDD表示的是年中的第几天,不是月份内的日期,需改为dd- 毫秒部分格式错误:
[nnnnnnn]不符合DateFormatter规则,7位小数的毫秒应该用SSSSSSS(每个S对应一位毫秒数,最多支持7位)
未指定固定Locale
DateFormatter的解析行为会受系统地区设置影响,必须指定en_US_POSIX这个Locale,避免因地区格式差异导致解析失败。
修正后的代码如下:
private func stringToDate(dateString: String) -> Date? { let formatter = DateFormatter() formatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSSSSS" formatter.locale = Locale(identifier: "en_US_POSIX") return formatter.date(from: dateString) }
传入示例字符串"2022-08-16T13:44:11.8743234"即可正常解析出Date对象。
内容的提问来源于stack exchange,提问作者pnizzle
相关产品推荐
相关产品推荐

