【问题标题】:How to Convert UNIX epoch time to Date and time in ios swift如何在 ios swift 中将 UNIX 纪元时间转换为日期和时间
【发布时间】:2015-06-22 14:46:31
【问题描述】:

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

var epocTime = NSTimeInterval(1429162809359)

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

实际结果是(格林威治标准时间 2015 年 4 月 16 日星期四 05:40:09),但得到的结果类似于 (47258-05-14 05:15:59 +0000) 谁能告诉我如何实现这一目标。

【问题讨论】:

  • 链接的问题有更多(稍微)细节(有人希望这能起作用的原因,指向将其正确转换的其他网站的链接等)。并且它没有被否定投票,它被赞成。所以两个指标说明问题比较好。并且接受的答案明显更好(有点偏见,但我认为是这样)......

标签: swift datetime unix-timestamp


【解决方案1】:

更新:Xcode 8.2.1 • Swift 3.0.2 或更高版本

您需要将它从毫秒除以 1000 转换:

let epochTime = TimeInterval(1429162809359) / 1000
let date = Date(timeIntervalSince1970: epochTime)   // "Apr 16, 2015, 2:40 AM"

print("Converted Time \(date)")         // "Converted Time 2015-04-16 05:40:09 +0000\n"

【讨论】:

  • 您无缘无故地减少毫秒数。
  • @gnasher729 这并没有减少毫秒数。
  • 非常感谢 Leo...您节省了我的时间
【解决方案2】:

斯威夫特 5

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

我可以以任何有意义的方式将该值显示为日期的唯一方法是截断最后 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”

..它反映了原始时间戳正是那个日期的事实。

希望对遇到同样问题的人有所帮助。

【讨论】:

  • 您不应该对 Z 进行转义。这会起作用,因为您还将时区设置为 UTC,但如果您使用 UTC 以外的时区解析日期字符串,则会失败。
  • 顺便说一句,将整数转换为 Double 后,您应该除以 1000。此方法的字符串结果永远不会保留毫秒。
【解决方案3】:

您的时间信息似乎是“自 1970 年以来的毫秒数”。应该很容易弄清楚:我们大约是 1970 年之后的 46 年,但您的日期是 1970 年之后的大约 45,000 年。

NSTimeInterval 基于 SECONDS。

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

【讨论】:

    猜你喜欢
    • 2018-12-27
    • 2018-10-01
    • 2016-09-15
    • 2013-01-08
    • 2018-08-03
    • 2013-04-02
    • 2015-01-07
    • 2020-05-24
    相关资源
    最近更新 更多