如何在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在几秒钟内。