Title here
Summary here
Swift supports time formatting and parsing via pattern-based layouts.
import Foundation
func main() {
let p = { (items: Any...) in
items.forEach { print($0) }
}
// Here's a basic example of formatting a time
// according to ISO8601, which is similar to RFC3339.
let t = Date()
p(ISO8601DateFormatter().string(from: t))
// Time parsing uses a DateFormatter for custom formats.
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ssZZZZZ"
if let t1 = dateFormatter.date(from: "2012-11-01T22:08:41+00:00") {
p(t1)
}
// Format and parse use example-based layouts. Usually
// you'll use a constant from DateFormatter.Style for these layouts, but
// you can also supply custom layouts. Layouts must use the
// date format patterns as specified in Unicode Technical Standard #35.
let customFormatter = DateFormatter()
customFormatter.dateFormat = "h:mma"
p(customFormatter.string(from: t))
customFormatter.dateFormat = "E MMM d HH:mm:ss yyyy"
p(customFormatter.string(from: t))
customFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSZZZZZ"
p(customFormatter.string(from: t))
customFormatter.dateFormat = "h mm a"
if let t2 = customFormatter.date(from: "8 41 PM") {
p(t2)
}
// For purely numeric representations you can also
// use standard string formatting with the extracted
// components of the time value.
let calendar = Calendar.current
let components = calendar.dateComponents([.year, .month, .day, .hour, .minute, .second], from: t)
print(String(format: "%04d-%02d-%02dT%02d:%02d:%02d-00:00",
components.year!, components.month!, components.day!,
components.hour!, components.minute!, components.second!))
// DateFormatter will return nil on malformed input.
customFormatter.dateFormat = "E MMM d HH:mm:ss yyyy"
if let _ = customFormatter.date(from: "8:41PM") {
p("Parsed successfully")
} else {
p("Failed to parse")
}
}
main()This Swift code demonstrates time formatting and parsing, which is conceptually similar to the Go example, but uses Swift’s Foundation framework and its Date, DateFormatter, and ISO8601DateFormatter types.
Key differences and notes:
DateFormatter for most custom date formatting and parsing tasks.ISO8601DateFormatter is used for ISO8601/RFC3339-like formatting.DateFormatter.date(from:) returns an optional Date?.time.Parse() function. Instead, you configure a DateFormatter and use its date(from:) method.Calendar type is used to extract individual components from a Date.When running this code, you’ll see output similar to the Go example, with formatted dates and times according to various patterns.