How do you get the seconds from epoch in Swift?
- 
                    2Same as in Objective-C - use NSDate. – gnasher729 Aug 02 '14 at 15:32
- 
                    2I have avoided developing Apple products because I hate Objective-C. Consequently, I haven't learned it. And I know that the Swift syntax is at least slightly different. Just show me the syntax. Get yourself some easy SO reputation. – Chris Redford Aug 02 '14 at 15:35
- 
                    3https://developer.apple.com/library/prerelease/mac/documentation/Cocoa/Reference/Foundation/Classes/NSDate_Class/index.html#//apple_ref/occ/instm/NSDate/timeIntervalSince1970 – Martin R Aug 02 '14 at 15:37
- 
                    1Care to explain the downvotes? – Chris Redford Aug 02 '14 at 15:43
- 
                    1Asking for code, not looking to learn, particularly your previous comment WRT "easy SO ". – zaph Aug 02 '14 at 15:44
- 
                    I'm looking to learn the code. Which is why I'm asking for it. This question has an upvote of 106 and asks the exact same question, just in C# instead of Swift: http://stackoverflow.com/questions/2883576/how-do-you-convert-epoch-time-in-c – Chris Redford Aug 02 '14 at 15:48
- 
                    Looks like I'm going to need moderator. – Chris Redford Aug 02 '14 at 15:50
- 
                    Moderator, why? Because your question was down voted? – zaph Aug 02 '14 at 15:51
- 
                    Because the people who are downvoting it (at least you) don't believe SO should have consistent standards. So your vote is apparently based on random haphazard standards. – Chris Redford Aug 02 '14 at 15:53
- 
                    If this question is so easy to answer, why wouldn't someone just answer it? – Chris Redford Aug 02 '14 at 15:56
- 
                    Actually @Martin did answer the question in a comment above. – zaph Aug 02 '14 at 16:00
- 
                    No, Martin linked to a gigantic reference page. More helpful than your contributions but still doesn't answer the question. See Yannik's answer below as an example of what an answer looks like. – Chris Redford Aug 02 '14 at 16:02
- 
                    4No, it links directly to the entry for the Swift method: `- timeIntervalSince1970`. – zaph Aug 02 '14 at 16:07
- 
                    3Actually I linked to the specific method :) – Martin R Aug 02 '14 at 16:07
- 
                    Apple's website formatting didn't make that clear. While I appreciate it, it still isn't as clear as the way Yannik answered, especially for someone learning a new language. – Chris Redford Aug 02 '14 at 16:12
- 
                    In Sumit Oberoi's response (based on CHIP-love-NY comment)... 1000 millisecond = 1 seconds. You should divide by 1000 to get seconds. Should be: In seconds:Int(Date().timeIntervalSince1970 / 1000) – P. Stern Feb 23 '19 at 07:13
5 Answers
You can simply use NSDate's timeIntervalSince1970 function. 
let timeInterval = NSDate().timeIntervalSince1970
- 
                    7
- 
                    3
- 
                    4If you don't want to use foundation then you could use AFNetworking/AlamoFire (https://github.com/Alamofire/Alamofire) to load https://currentmillis.com/ and then parse the html of the page. Note that you have to account for networking delays and check for connectivity. I decided to just use Foundation... – Chase Roberts Dec 09 '16 at 20:23
- 
                    2
- 
                    
- 
                    And if you want milliseconds since 1970: `let timeInterval = Int(NSDate().timeIntervalSince1970*1000)`. Casting as an `Int` is optional. – Daniel Node.js Aug 12 '22 at 19:35
For Swift 3.0
Date().timeIntervalSince1970
 
    
    - 529,903
- 94
- 1,240
- 1,382
 
    
    - 3,455
- 2
- 18
- 18
- 
                    2Good one. Also, folks may be interested in http://stackoverflow.com/questions/39811352/swift-3-date-vs-nsdate – Matt Johnson-Pint Jan 08 '17 at 21:10
- 
                    13@CHiP-love-NY: That is not true. [Unix time](https://en.wikipedia.org/wiki/Unix_time) is the number of **seconds** since 1 January 1970, UTC. – Martin R Feb 23 '19 at 13:48
- 
                    3It returns a [TimeInterval](https://developer.apple.com/documentation/foundation/timeinterval), which is in secods – Daniel Nov 18 '19 at 16:11
You can get that using following
Int(Date().timeIntervalSince1970)
This is for current date, if you want to get for a given date
Int(myDate.timeIntervalSince1970)
If you want to convert back from UNIX time epoch to Swift Date time, you can use following
let date = Date(timeIntervalSince1970: unixtEpochTime)
 
    
    - 5,070
- 28
- 29
1 second = 1,000 milliseconds
1 second = 1,000,000 microseconds
Swift's timeIntervalSince1970 returns seconds with what's documented as "sub-millisecond" precision, which I've observed to mean usually microseconds but sometimes one scale (one digit to the right of the decimal) less or more. When it returns a scale of 5 (5 digits after the decimal), I assume Swift couldn't produce 6 scales of precision, and when it returns a scale of 7, that extra digit can be truncated because it's beyond microsecond precision. Therefore:
let secondPrecision = Int(Date().timeIntervalSince1970) // definitely precise
let millisecondPrecision = Int(Date().timeIntervalSince1970 * 1_000) // definitely precise
let microsecondPrecision = Int(Date().timeIntervalSince1970 * 1_000_000) // most-likely precise
All that said, millisecond-precision is the true Unix timestamp and the one that, I think, everyone should use. If you're working with an API or a framework that uses the Unix timestamp, most likely it will be millisecond-precise. Therefore, for a true Unix timestamp in Swift:
typealias UnixTimestamp = Int
extension Date {
    /// Date to Unix timestamp.
    var unixTimestamp: UnixTimestamp {
        return UnixTimestamp(self.timeIntervalSince1970 * 1_000) // millisecond precision
    }
}
extension UnixTimestamp {
    /// Unix timestamp to date.
    var date: Date {
        return Date(timeIntervalSince1970: TimeInterval(self / 1_000)) // must take a millisecond-precise Unix timestamp
    }
}
let unixTimestamp = Date().unixTimestamp
let date = unixTimestamp.date
Note that in the year 2038, 32-bit numbers won't be usable for the Unix timestamp, they'll have to be 64-bit, but Swift will handle that for us automatically so we can safely use Int (and need not use Int64 explicitly).
 
    
    - 11,654
- 3
- 38
- 51
If you don't want to import Foundation, i.e. for Linux use etc, you can use the following from CoreFoundation:
import CoreFoundation
let timestamp = CFAbsoluteTimeGetCurrent() + kCFAbsoluteTimeIntervalSince1970
 
    
    - 4,086
- 1
- 23
- 32
- 
                    1Do you know when things might Date and friends will become cross-platform? – Zoltán Matók Aug 05 '20 at 16:03
- 
                    @ZoltánMatók I've heard they have plans to reimplement more of Foundation in the open. Take a look at forums.swift.org for more info. – rshev Aug 06 '20 at 23:13
 
     
    