swiftlang / swift-foundation

The Foundation project
Apache License 2.0
2.38k stars 153 forks source link

ISO8601 date parser that preserves the timezone offset information #967

Open simonjbeaumont opened 2 days ago

simonjbeaumont commented 2 days ago

Currently, the ISO8601 date parser, ISO8601DateFormatter.date(from:) parses an ISO8601 date string into a Date.

The parsing strategy correctly handles the timezone offset, but this information is then lost, because Date itself is not timezone aware:

import Foundation
let dateString = "2024-10-08T08:12:34-08:00"
let date = ISO8601DateFormatter().date(from: dateString)!  // timezone offset lost

There are use cases that would like to parse such a string and also know what timezone the date was formatted in. It would be great to have API for returning a timezone-aware value, or even just to return the offset alongside the Date.

parkera commented 2 days ago

Returning a DateComponents would be a great way to address this and unlock other use cases as well.