관리 메뉴

김종권의 iOS 앱 개발 알아가기

[iOS - swift] 시간 UNIX time, timeIntervalSince1970, Date(), DateFormatter(), Date to String, String to Date, timeIntervalSince1970 to Date 본문

iOS 응용 (swift)

[iOS - swift] 시간 UNIX time, timeIntervalSince1970, Date(), DateFormatter(), Date to String, String to Date, timeIntervalSince1970 to Date

jake-kim 2021. 10. 14. 02:17

UNIX timestamp

  • 1970-01-01 00:00:00 기준으로 현재까지 몇 초가 지났는지를 나타내는 seconds
    • ex) 1970-01-01 00:00:01의 Unix Timestamp는 `1`

timeIntervalSince1970

  • swift에서의 값은 UNIX timestamp를 의미

  • Date 객체의 property로 접근
let currentDate = Date().timeIntervalSince1970
print(currentDate) // 1634144792.884293
  • timeIntervalSince1970은 TimeInterval(=Double) 타입

timeIntervalSince1970 to Date

  • Date(timeIntervalSince1970:) 사용
let unixTime = Date().timeIntervalSince1970 // 1634145125.736706
let date = Date(timeIntervalSince1970: unixTime) // 2021-10-13 17:12:05 +0000

String to Date, Date to String

  • 주의: String에서 Date를 변경하는 경우, 값을 변경하기 까다롭기 때문에 UNIX timestamp값을 이용하여 시간 계산을 지향

ex) dateFormatter를 이용하여 date to string, string to date하면 원하는대로 안나오는 것을 주의

extension Date {
    var toString: String {
        let dateFormatter = DateFormatter()
        return dateFormatter.string(from: self)
    }
}

extension String {
    var toDate: Date? {
        let dateFormatter = DateFormatter()
        return dateFormatter.date(from: self)
    }
}

let currentDate = Date()
print(currentDate) // 2021-10-13 17:04:52 +0000
print(currentDate.toString) // ""
print(currentDate.toString.toDate) // Optional(1999-12-31 15:00:00 +0000)
  • Unix time을 사용하여 변경
    • Date to String: Date > unix time >  String
    • String to Date: String > unix time > Date
// Date to String
let date = Date() // 2021-10-13 17:16:15 +0000
let unixTime = date.timeIntervalSince1970 // 1634145375.8035932
let unixTimeStr = String(unixTime) // "1634145375.8035932"

// String to Date
let unixTime2 = Double(unixTimeStr) ?? 0.0 // 1634145375.8035932
let date2 = Date(timeIntervalSince1970: unixTime2) // 2021-10-13 17:16:15 +0000

 

* 참고

- timeIntervalSince1970: 

https://developer.apple.com/documentation/foundation/nsdate/1407504-timeintervalsince1970

- UNIX timestamp: https://ko.wikipedia.org/wiki/%EC%9C%A0%EB%8B%89%EC%8A%A4_%EC%8B%9C%EA%B0%84

Comments