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

Swift中日期格式转换遇nil问题:将yyyy-MM-dd hh:mm:ss +0000转为dd MMM

问题分析与修正方案

你的代码解析日期时返回nil,主要有三个问题:

  • 小时格式用了hh(12小时制),但输入的时间是24小时制的18:30,应该改用HH
  • 时区部分硬写+0000,正确的格式符是Z,用来匹配带符号的时区偏移
  • 没有指定locale,系统默认区域可能导致解析失败,或者最终月份缩写不符合预期

修正后的代码如下:

func convertToDateString(dateStr: String) -> String {
    let formatter = DateFormatter()
    // 设置固定locale,避免系统区域影响解析和格式化
    formatter.locale = Locale(identifier: "en_US_POSIX")
    // 匹配输入日期的格式:24小时制+时区偏移
    formatter.dateFormat = "yyyy-MM-dd HH:mm:ss Z"
    guard let date = formatter.date(from: dateStr) else {
        return ""
    }
    // 设置输出格式
    formatter.dateFormat = "dd MMM"
    return formatter.string(from: date)
}

调用这个函数传入"2024-04-02 18:30:00 +0000",就能得到"02 Apr"的结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 02:50:57