Unix Timestamp in Swift

Get the current Unix timestamp

Swift
// Seconds (Double)
Date().timeIntervalSince1970           // 1700000000.0

// Integer seconds
Int(Date().timeIntervalSince1970)      // 1700000000

// Milliseconds
Int(Date().timeIntervalSince1970 * 1000)

Convert epoch to Date

Swift
let epoch: TimeInterval = 1700000000
let date = Date(timeIntervalSince1970: epoch)

// Format for display
let formatter = DateFormatter()
formatter.dateFormat = "yyyy-MM-dd HH:mm:ss"
formatter.timeZone = TimeZone(identifier: "UTC")
print(formatter.string(from: date))    // "2023-11-14 22:13:20"

// ISO 8601
let iso = ISO8601DateFormatter()
print(iso.string(from: date))          // "2023-11-14T22:13:20Z"

Convert Date to epoch

Swift
// From DateComponents
var components = DateComponents()
components.year = 2023; components.month = 11; components.day = 14
components.hour = 22; components.minute = 13; components.second = 20
components.timeZone = TimeZone(identifier: "UTC")

if let date = Calendar.current.date(from: components) {
    let epoch = Int(date.timeIntervalSince1970)  // 1700000000
}

// From ISO 8601 string
let formatter = ISO8601DateFormatter()
if let date = formatter.date(from: "2023-11-14T22:13:20Z") {
    let epoch = Int(date.timeIntervalSince1970)
}

Timezones

Swift
let date = Date(timeIntervalSince1970: 1700000000)

let formatter = DateFormatter()
formatter.dateFormat = "yyyy-MM-dd HH:mm:ss zzz"
formatter.timeZone = TimeZone(identifier: "Asia/Kolkata")
print(formatter.string(from: date))    // "2023-11-15 03:43:20 IST"

Time arithmetic

Swift
let now = Date()
let tomorrow = now.addingTimeInterval(86400)
let anHourAgo = now.addingTimeInterval(-3600)

// Using Calendar
let nextWeek = Calendar.current.date(byAdding: .day, value: 7, to: now)!

// Check expiry
let expiry = Date(timeIntervalSince1970: 1700000000)
if Date() > expiry { print("expired") }

Use the live epoch converter to convert any Swift timestamp instantly.