获得当前系统时间毫秒的最佳方法是什么?
当前回答
[[NSDate date] timeIntervalSince1970];
它以双精度返回自epoch以来的秒数。我几乎可以肯定你可以从小数部分访问毫秒。
其他回答
func currentmicrotimeTimeMillis() -> Int64{
let nowDoublevaluseis = NSDate().timeIntervalSince1970
return Int64(nowDoublevaluseis*1000)
}
斯威夫特2
let seconds = NSDate().timeIntervalSince1970
let milliseconds = seconds * 1000.0
斯威夫特3
let currentTimeInMiliseconds = Date().timeIntervalSince1970.milliseconds
如果你正在考虑使用这个相对定时(例如游戏或动画),我宁愿使用CACurrentMediaTime()
double CurrentTime = CACurrentMediaTime();
哪一种是推荐的方式;NSDate从网络的同步时钟中提取,并且在与网络重新同步时偶尔会打嗝。
它返回当前的绝对时间,以秒为单位。
如果你只想要小数部分(通常在同步动画时使用),
let ct = CACurrentMediaTime().truncatingRemainder(dividingBy: 1)
获取当前日期的毫秒数。
斯威夫特4 +:
func currentTimeInMilliSeconds()-> Int
{
let currentDate = Date()
let since1970 = currentDate.timeIntervalSince1970
return Int(since1970 * 1000)
}
我在iPhone 4S和iPad 3(发行版本)上测试了所有其他答案。CACurrentMediaTime的开销最小。timeIntervalSince1970比其他的要慢得多,可能是由于NSDate实例化开销,尽管对于许多用例来说可能无关紧要。
如果您希望开销最少,并且不介意添加Quartz Framework依赖项,我建议您使用CACurrentMediaTime。或者gettimeofday(如果可移植性对您来说是优先考虑的)。
iPhone 4 s
CACurrentMediaTime: 1.33 µs/call
gettimeofday: 1.38 µs/call
[NSDate timeIntervalSinceReferenceDate]: 1.45 µs/call
CFAbsoluteTimeGetCurrent: 1.48 µs/call
[[NSDate date] timeIntervalSince1970]: 4.93 µs/call
iPad 3
CACurrentMediaTime: 1.25 µs/call
gettimeofday: 1.33 µs/call
CFAbsoluteTimeGetCurrent: 1.34 µs/call
[NSDate timeIntervalSinceReferenceDate]: 1.37 µs/call
[[NSDate date] timeIntervalSince1970]: 3.47 µs/call
推荐文章
- Git在不改变提交时间戳的情况下进行改基
- 如何使用iOS创建GUID/UUID
- 禁用所呈现视图控制器的交互式撤销
- 点击按钮时如何打开手机设置?
- 如何使用UIVisualEffectView来模糊图像?
- 如何修复UITableView分隔符在iOS 7?
- 故事板中的自定义单元格行高设置没有响应
- 在Swift中使用自定义消息抛出错误/异常的最简单方法?
- 如何在Swift中获得唯一的设备ID ?
- 复制文本到剪贴板与iOS
- 在Swift中根据字符串计算UILabel的大小
- 如何调用手势点击在UIView编程在迅速
- 如何在PostgreSQL中自动更新时间戳
- 我如何隐藏在一个Swift iOS应用程序的状态栏?
- 在iPad上使用iOS 8正确呈现UIAlertController