如何在ios swift中将UNIX纪元时间转换为日期和时间

时间:2015-04-16 09:27:27

标签: swift datetime unix-timestamp

我正在尝试使用以下代码将UNIX epoc时间转换为datetime格式

var epocTime = NSTimeInterval(1429162809359)

let myDate = NSDate(timeIntervalSince1970: epocTime)
println("Converted Time \(myDate)")

实际结果是(星期四,2015年4月16日05:40:09 GMT)但我得到的东西(47258-05-14 05:15:59 +0000)任何人都可以请电话给我如何实现这一目标。< / p>

3 个答案:

答案 0 :(得分:4)

更新: Xcode 8.2.1•Swift 3.0.2

你需要将其转换为毫秒除以1000:

let epocTime = TimeInterval(1429162809359) / 1000

let myDate = Date(timeIntervalSince1970:  epocTime)   // "Apr 16, 2015, 2:40 AM"
print("Converted Time \(myDate)")         // "Converted Time 2015-04-16 05:40:09 +0000\n"

答案 1 :(得分:0)

您的时间信息似乎是&#34;自1970年以来的毫秒数&#34;。应该直截了当地说明:我们在1970年之后大约46年,但是你的日期在1970年之后约为45,000。

NSTimeInterval基于SECONDS。

将您的数字转换为double并除以1000.0。

答案 2 :(得分:0)

雨燕5

我正在处理定义为Int的JSON api中的日期,时间戳的示例是1587288545760(UTC)

我可以以任何有意义的方式将该值显示为Date的唯一方法是截断最后3位数字,然后将结果日期转换为“ yyyy-MM-dd'T'HH:mm:ss.SSS 'Z'“

这是我为实现该目的而创建的功能。

func convertDate(dateValue: Int) -> String {
    let truncatedTime = Int(dateValue / 1000)
    let date = Date(timeIntervalSince1970: TimeInterval(truncatedTime))
    let formatter = DateFormatter()
    formatter.timeZone = TimeZone(abbreviation: "UTC")
    formatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"
    return formatter.string(from: date)
}

它对我有用,最后我得到一个看起来像这样的日期:

“ 2020-04-19T09:29:05.000Z”

..并且它反映了一个事实,即原始时间戳记正是该日期。

希望可以帮助遇到相同问题的任何人。