一尘不染

如何在Swift中获取18位的当前时间戳?

swift

我想要这样的当前时间戳:

636110767775716756​

但是,当我这样做时:

NSDate().timeIntervalSince1970

它返回这样的值:

1475491615.71278

如何以所需格式访问当前时间戳记?我从这里检查日期


阅读 290

收藏
2020-07-07

共1个答案

一尘不染

您似乎正在寻找DateTime.TicksC#中的内容,即自0001-01-01开始的时间以100纳秒为间隔测量。

您提供的链接Swift中的代码:将NSDate转换为c#刻度可以轻松地转换为Swift:

// Swift 2:
extension NSDate {
    var ticks: UInt64 {
        return UInt64((self.timeIntervalSince1970 + 62_135_596_800) * 10_000_000)
    }
}

// Swift 3:
extension Date {
    var ticks: UInt64 {
        return UInt64((self.timeIntervalSince1970 + 62_135_596_800) * 10_000_000)
    }
}

示例(快速3):

let ticks = Date().ticks
print(ticks) // 636110903202288256

或作为字符串:

let sticks = String(Date().ticks)
print(sticks)

而在此期间,从滴答声到的反向转换Date 将是

// Swift 2:
extension NSDate {
    convenience init(ticks: UInt64) {
        self.init(timeIntervalSince1970: Double(ticks)/10_000_000 - 62_135_596_800)
    }
}

// Swift 3:
extension Date {
    init(ticks: UInt64) {
        self.init(timeIntervalSince1970: Double(ticks)/10_000_000 - 62_135_596_800)
    }
}

示例(快速3):

let date = Date(ticks: 636110903202288256)
2020-07-07