DateFormatter:dateFormat毫秒数Swift

时间:2018-10-08 06:58:11

标签: swift dateformatter

我正在编写DateFormatter的{​​{1}},以将JSON从服务器转换为本地swift对象。 服务器将返回以下内容。

  • 2018-10-07T15:26:33.236Z
  • 2018-10-07T15:26:33Z
  • 2018-10-07T15:26:33.26Z

以下是我的代码,但是我不确定是否只能写一行而不是切换情况(从SWITCH-CASE START到END)。

无论返回的时间是否为毫秒,仅dateFormat就是一个理想的选择。 任何建议表示赞赏。

dateFormat

1 个答案:

答案 0 :(得分:3)

实际上检查日期字符串是否包含句点就足够了

if dateStr.contains(".") {
    formatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SZ"
} else {
    formatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ssZ"
}

或者使用ISO8601DateFormatter并使用正则表达式删除毫秒,这也避免了指定calendarlocaletimezone

let formatter = ISO8601DateFormatter()
let trimmedDateStr = dateStr.replacingOccurrences(of: "\\.\\d+", with: "", options: .regularExpression)
return formatter.date(from: trimmedDateStr)!