Swift ISO 8601/RFC 3339/ATOM/RSS date formats

Some common date formats in swift are:

  • ISO 8601: yyyy-MM-ddTHH:mm:ss.SSS (e.g. 2023-11-04T08:47:05.123)
  • RFC 3339: yyyy-MM-ddTHH:mm:ssZ (e.g. 2023-11-04T08:47:05Z)
  • ATOM: yyyy-MM-ddTHH:mm:ss-05:00 (e.g. 2023-11-04T08:47:05-05:00)
  • RSS: Tue, 04 Nov 2023 08:47:05 EST (e.g. Tue, 04 Nov 2023 08:47:05 EST)

The T character is used to separate the date from the time. The Z character at the end of some formats indicates that the time is in UTC (Coordinated Universal Time).

Here are some examples of how to use these date formats with Swift:

// ISO 8601
let iso8601DateFormatter = DateFormatter()
iso8601DateFormatter.dateFormat = "yyyy-MM-ddTHH:mm:ss.SSS"

let iso8601Date = iso8601DateFormatter.date(from: "2023-11-04T08:47:05.123")

// RFC 3339
let rfc3339DateFormatter = DateFormatter()
rfc3339DateFormatter.dateFormat = "yyyy-MM-ddTHH:mm:ssZ"

let rfc3339Date = rfc3339DateFormatter.date(from: "2023-11-04T08:47:05Z")

// ATOM
let atomDateFormatter = DateFormatter()
atomDateFormatter.dateFormat = "yyyy-MM-ddTHH:mm:ss-05:00"

let atomDate = atomDateFormatter.date(from: "2023-11-04T08:47:05-05:00")

// RSS
let rssDateFormatter = DateFormatter()
rssDateFormatter.dateFormat = "EEE, dd MMM yyyy HH:mm:ss zzz"

let rssDate = rssDateFormatter.date(from: "Tue, 04 Nov 2023 08:47:05 EST")

Similarly date to string examples are:

// ISO 8601
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-ddTHH:mm:ss.SSSZ"

let dateString = dateFormatter.string(from: date)

print(dateString) // 2023-11-04T08:47:05.123Z

// RFC 3339
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-ddTHH:mm:ssZ"

let dateString = dateFormatter.string(from: date)

print(dateString) // 2023-11-04T08:47:05Z

// ATOM
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-ddTHH:mm:ss-05:00"

let dateString = dateFormatter.string(from: date)

print(dateString) // 2023-11-04T08:47:05-05:00


// RSS
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "EEE, dd MMM yyyy HH:mm:ss zzz"

let dateString = dateFormatter.string(from: date)

print(dateString) // Tue, 04 Nov 2023 08:47:05 EST

Hope it helps!!!

A pat on the back !!