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

如何通过if let识别接口返回字符串中的年份或ISO8601日期?

嘿,这个场景我之前做项目时碰到过,刚好有两种实用的方法可以解决,看你需求选就行👇

方法一:用正则表达式直接匹配格式

这种方式不用把字符串转成Date,纯粹从字符结构上判断,速度更快,适合只需要区分类型的场景。

思路很简单:

  • 年份字符串就是纯4位数字,用正则 ^\d{4}$ 匹配
  • 你提到的ISO8601格式(比如1995-01-01T00:00:00Z)有固定结构,用正则 ^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}Z$ 匹配

直接上代码:

let inputString = "1995-01-01T00:00:00Z" // 换成你要判断的字符串

do {
    // 匹配4位年份的正则
    let yearRegex = try NSRegularExpression(pattern: "^\\d{4}$")
    // 匹配目标ISO8601格式的正则
    let isoRegex = try NSRegularExpression(pattern: "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}Z$")
    
    let stringRange = NSRange(inputString.startIndex..., in: inputString)
    
    if yearRegex.firstMatch(in: inputString, range: stringRange) != nil {
        print("这是年份字符串")
        // 这里可以做年份相关的处理
    } else if isoRegex.firstMatch(in: inputString, range: stringRange) != nil {
        print("这是ISO8601格式的日期字符串")
        // 这里可以做ISO日期相关的处理
    } else {
        print("字符串格式既不是年份也不是目标ISO8601格式")
    }
} catch {
    print("正则表达式创建失败:\(error)")
}

方法二:用DateFormatter尝试解析(更严谨)

如果你不仅要判断类型,还要后续把字符串转成Date,那直接用Formatter尝试解析会更靠谱,因为它能验证字符串是否是有效的日期(比如正则会匹配"9999",但如果业务里年份有范围限制,Formatter结合配置可以过滤)。

代码示例:

let inputString = "2023" // 换成你要判断的字符串

// 配置年份解析器
let yearFormatter = DateFormatter()
yearFormatter.dateFormat = "yyyy"
yearFormatter.locale = Locale(identifier: "en_US_POSIX") // 固定locale避免地区差异
yearFormatter.timeZone = TimeZone(secondsFromGMT: 0)

// 配置ISO8601解析器(系统自带的,比自定义DateFormat更可靠)
let isoFormatter = ISO8601DateFormatter()

if let _ = yearFormatter.date(from: inputString) {
    print("这是年份字符串")
    // 可以在这里转成Date或者直接提取年份数字
} else if let _ = isoFormatter.date(from: inputString) {
    print("这是ISO8601格式的日期字符串")
    // 可以在这里转成Date做后续处理
} else {
    print("格式不匹配,无法解析")
}

小提示

  • 如果你的ISO8601字符串有其他变体(比如带毫秒、不带Z时区),可以调整ISO8601DateFormatter的options参数,比如[.withFullDate, .withFullTime, .withColonSeparatorInTime]
  • 正则方法适合快速判断格式,Formatter方法适合需要确保日期有效性的场景,根据你的业务需求选就行~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 08:40:43