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

设置正确dateFormat后yyyy-MM-dd HH:mm:ss字符串转Date返回nil求解

日期解析返回nil的常见原因及修复方案

  • Locale未固定导致规则被修改
    DateFormatter默认使用当前系统的Locale,部分地区的本地化规则会覆盖你指定的日期格式,导致解析失败。解析固定格式的日期时必须手动指定en_US_POSIX这个标准化Locale:
dateFormatter.locale = Locale(identifier: "en_US_POSIX")

这个Locale专门用于处理固定格式的日期字符串解析,不会受系统区域、语言设置的影响。

  • 时区不匹配
    如果你的日期字符串对应的时区和DateFormatter默认的系统时区不一致,也会触发解析失败,可根据日期字符串的实际时区手动指定:
// 示例:如果日期是UTC时区
dateFormatter.timeZone = TimeZone(abbreviation: "UTC")
// 示例:如果日期是东八区时区
dateFormatter.timeZone = TimeZone(secondsFromGMT: 8 * 3600)
  • 字符串包含不可见字符
    你获取到的creationTs字符串可能前后带有空格、换行符、零宽空格等不可见Unicode字符,解析前先做 trimming 处理即可:
let trimmedDateStr = date.trimmingCharacters(in: .whitespacesAndNewlines)
let sentDate = dateFormatter.date(from: trimmedDateStr)
  • 格式符大小写不匹配
    注意你设置的格式符大小写规则:HH对应24小时制的小时,如果实际返回的字符串是12小时制需要换成hh,如果字符串里带有AM/PM标识还要补充a格式符。你示例里的2021-05-17 12:05:59格式和yyyy-MM-dd HH:mm:ss是匹配的,不需要调整格式符。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 03:57:01