我想要获取当前时间戳,像这样:
636110767775716756
然而,当我这样做时:
NSDate().timeIntervalSince1970
它返回一个类似于这样的值:
1475491615.71278
我该如何以我想要的格式访问当前时间戳?我从 这里 检查日期:
你似乎在寻找C#中的 DateTime.Ticks
是什么,即自0001-01-01以来以100纳秒间隔测量的时间。
你提供的链接中的代码 Swift: convert NSDate to c# ticks 可以很容易地转换为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
或者作为一个字符串:
let sticks = String(Date().ticks)
print(sticks)
同时,反向将ticks转换为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)
这里有一个我认为非常优雅的解决方法。我扩展了NSDate(虽然在Swift 3中现在变成了Date),并添加了一个toMillis()函数,它将给出您正在使用的日期对象的Int64值。
extension Date {
func toMillis() -> Int64! {
return Int64(self.timeIntervalSince1970 * 1000)
}
}
使用方法:
let currentTimeStamp = Date().toMillis()
干杯
在 Swift 中:
如果您想将其作为全局变量,请参阅下面的代码:
var Timestamp: String {
return "\(NSDate().timeIntervalSince1970 * 1000)"
}
那么,您可以称之为
println("Timestamp: \(Timestamp)")
*1000是毫秒,如果您愿意,可以将其去除。如果保留它,则为NSTimeInterval。
var Timestamp: NSTimeInterval {
return NSDate().timeIntervalSince1970 * 1000
}
在 Objective-C 中:
如果您想声明一个符号常量,请参考下面的代码:
#define TimeStamp [NSString stringWithFormat:@"%f",[[NSDate date] timeIntervalSince1970] * 1000]
然后像这样调用它:
NSString * timestamp = TimeStamp;
或创建一个全局方法:
- (NSString *) timeStamp {
return [NSString stringWithFormat:@"%f",[[NSDate date] timeIntervalSince1970] * 1000];
}
注意:1000是用于将时间戳转换为毫秒。如果您更喜欢以秒为单位的时间间隔,则可以删除此部分。
timeIntervalSince1970
的最高位数字目前是1
,这与您要查找的内容不太匹配。 - Anya Shenanigans