我正在分析这个

2017-01-23T10:12:31.484Z

使用iOS 10提供的原生ISO8601DateFormatter类,但总是失败.

我try 过这个和许多options个组合,但总是失败...

let formatter = ISO8601DateFormatter()
formatter.timeZone = TimeZone(secondsFromGMT: 0)
formatter.formatOptions = [.withInternetDateTime, .withDashSeparatorInDate, .withColonSeparatorInTime, .withColonSeparatorInTimeZone, .withFullTime]

知道吗?

推荐答案

macOS 10.13/iOS 11之前的版本ISO8601DateFormatter不支持包括毫秒在内的日期字符串.

解决方法是使用正则表达式删除毫秒部分.

let isoDateString = "2017-01-23T10:12:31.484Z"
let trimmedIsoString = isoDateString.replacingOccurrences(of: "\\.\\d+", with: "", options: .regularExpression)
let formatter = ISO8601DateFormatter()
let date = formatter.date(from: trimmedIsoString)

在macOS 10.13+/iOS 11+中,添加了一个新选项以支持分数秒:

static var withFractionalSeconds: ISO8601DateFormatter.Options { get }

let isoDateString = "2017-01-23T10:12:31.484Z"
let formatter = ISO8601DateFormatter()
formatter.formatOptions =  [.withInternetDateTime, .withFractionalSeconds]
let date = formatter.date(from: isoDateString)

Swift相关问答推荐

Swift Tree实现中的弱var

map 视图上的SwiftUI渐变折线

如何返回JSON数据?

SWIFT异步/等待,多个监听程序

如何强制创建新的UIViewControllerRenatable|更新Make UIViewController上的视图

如何使用AsyncTimerSequence获取初始时钟,然后在指定的时间间隔内开始迭代?

MacOS 13-如何使用SwiftUI创建Message.App设置工具栏?

SwiftUI-如何使用剩余时间制作倒计时计时器

SwiftUI,如何更改具有多个按钮和一个布尔条件的一个按钮标签

循环字典中的数组

本地对象的异步/等待引用捕获总是安全的还是理论上不安全?

如何将视图添加到多行文本视图的末尾?

找不到目标AAA的 SPM 工件 - 仅限 Xcode 13.3

Swift 2.0 方法不能标记为@objc,因为参数的类型不能在 Objective-C 中表示

FirebaseStorage:如何删除目录

更新我的 pod 导致 GoogleDataTransport Umbrella 标头出现错误

即使设置为从不也可以访问 iOS11 照片库

如何更改弹出框的大小

Swift 中惰性 var 的优势是什么

快速覆盖属性