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

我想获得像这样的当前时间戳:

636110767775716756​ 

但是,当我这样做的时候:

 NSDate().timeIntervalSince1970 

它返回一个像这样的值:

 1475491615.71278 

如何以我想要的格式访问当前时间戳? 我从这里查看date:

你似乎在寻找什么DateTime.Ticks是在C#,即自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) } } 

示例(Swift 3):

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

或者作为一个string:

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

同时,它是从tick到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) } } 

示例(Swift 3):

 let date = Date(ticks: 636110903202288256) 

这是一个我觉得非常优雅的解决scheme。 我扩展了NSDate(尽pipe现在在Swift 3中只有Date),包含一个toMillis()函数,它将为您提供正在使用的date对象的Int64值。

 extension Date { func toMillis() -> Int64! { return Int64(self.timeIntervalSince1970 * 1000) } } 

用法:

 let currentTimeStamp = Date().toMillis() 

干杯

在Swift中:

如果你想makeit作为全局variables见下面的代码:

 var Timestamp: String { return "\(NSDate().timeIntervalSince1970 * 1000)" } 

那么,你可以打电话给它

 println("Timestamp: \(Timestamp)") 

* 1000是毫秒,如果你愿意,你可以删除它。 如果保持它作为NSTimeInterval。

 var Timestamp: NSTimeInterval { return NSDate().timeIntervalSince1970 * 1000 } 

在目标C中:

如果你想声明为符号常量见下面的代码:

 #define TimeStamp [NSString stringWithFormat:@"%f",[[NSDate date] timeIntervalSince1970] * 1000] 

然后像这样调用它:

 NSString * timestamp = TimeStamp; 

或者创build一个全局方法:

 - (NSString *) timeStamp { return [NSString stringWithFormat:@"%f",[[NSDate date] timeIntervalSince1970] * 1000]; } 

有一个注意: 1000是将时间戳转换为毫秒。 你可以删除这个,如果你喜欢你的timeInterval在几秒钟内。