Avatar ·

如何在Swift中解析和创建带小数秒和UTC的ISO 8601 / RFC 3339格式的日期/时间

大家好!我是Swift新手,在处理日期时遇到了问题。我需要向服务器发送和从服务器接收ISO 8601格式的时间戳,其中包含小数秒和UTC时区。例如字符串:"2024-03-15T14:30:45.123Z"。 问题在于,Swift中的标准`DateFormatter`并不总是能正确解析小数秒。我尝试了以下代码: ```swift let dateString = "2024-03-15T14:30:45.123Z" let formatter = DateFormatter() formatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSZ" if let date = formatter.date(from: dateString) { print("Date: \(date)") } else { print("Failed to parse") } ``` 但这运行不稳定。有时解析成功,有时失败。特别是当小数点后的数字位数变化时(例如".12"或".123456")。我还尝试使用了`ISO8601DateFormatter`,但在处理小数秒时也遇到了困难。 我需要: 1) 可靠地解析不同精度的小数秒字符串(从1