Avatar ·

Como analisar e criar data/hora com segundos fracionários e UTC no formato ISO 8601 / RFC 3339 em Swift?

Olá a todos! Sou novo em Swift e encontrei um problema ao trabalhar com datas. Preciso enviar para o servidor e receber do servidor timestamps no formato ISO 8601 com segundos fracionários e fuso horário UTC. Exemplo de tal string: "2024-03-15T14:30:45.123Z".\n\nO problema é que o `DateFormatter` padrão em Swift nem sempre processa corretamente segundos fracionários. Tentei este código:\n\n```swift\nlet dateString = "2024-03-15T14:30:45.123Z"\nlet formatter = DateFormatter()\nformatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSZ"\nif let date = formatter.date(from: dateString) {\n print("Date: \(date)")\n} else {\n print("Failed to parse")\n}\n```\n\nMas isso funciona de forma instável. Às vezes o parsing funciona, às vezes não. Especialmente se o número de dígitos após o ponto mudar (por exemplo, ".12" ou ".123456"). Também tentei usar `ISO8601DateFormatter`, mas também surgem dificuldades com segundos fracionários.\n\nPreciso de:\n1) Analisar de forma confiável strings com segundos fracionários de diferentes precisões (de 1