克诺斯是一个用Swift编写的NTP客户端库。它支持亚秒级精度并提供一个稳定的单调时钟,不会被时钟变化所影响。
示例应用
这个示例应用演示了如何在左侧显示单调的Clock.now
,在右侧显示系统时钟(最初是过时的)。
使用方法
使用一组NTP服务器同步时钟
调用 Clock.sync
将向指定 NTP 池中的最多 5 个服务器发送大量 NTP 请求(默认为 time.apple.com
)。一旦收到第一个响应,就会调用给定的闭包,但 Clock
仍会尝试获取更精确的响应。
Clock.sync { date, offset in
// This is the first sync (note that this is the fastest but not the
// most accurate run
print(date)
}
获取一个 NTP 同步的日期
Clock.now
是一个单调的 NSDate
,不会受到时钟变化的影响。
NSTimer.scheduledTimerWithTimeInterval(1.0, target: self,
selector: #selector(Example.tick),
userInfo: nil, repeats: true)
@objc func tick() {
print(Clock.now) // Note that this clock will get more accurate as
// more NTP servers respond.
}
安装
CocoaPods
将 Kratos 添加到您的 Podfile
中
pod 'Kronos'
Swift Package Manager
将 Kratos 添加到您的 Package.swift
.package(name: "Kronos", url: "https://github.com/MobileNativeFoundation/Kronos.git", .upToNextMajor(from: "TAG")),
Bazel
将 Kratos 添加到您的 WORKSPACE
http_archive(
name = "Kronos",
sha256 = "",
strip_prefix = "Kronos-TAG/",
url = "https://github.com/MobileNativeFoundation/Kronos/archive/TAG.tar.gz",
)
然后依赖于 @Kronos//:Kronos