Elegant NTP date library in Swift
Kronos is an NTP client library written in Swift. It supports sub-seconds precision and provides a stable monotonic clock that won't be affected by changes in the clock.
This is an example app that displays the monotonic
Clock.nowon the left and the system clock (initially out of date) on the right.
Calling
Clock.syncwill fire a bunch of NTP requests to up to 5 of the servers on the given NTP pool (default is
time.apple.com). As soon as we get the first response, the given closure is called but the
Clockwill keep trying to get a more accurate response.
Clock.sync { date, offset in // This is the first sync (note that this is the fastest but not the // most accurate run print(date) }
Clock.nowis a monotonic NSDate that won't be affected by clock changes.
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. }
Embedded frameworks require a minimum deployment target of iOS 8 or OS X Mavericks (10.9).
CocoaPods is a dependency manager for Cocoa projects. You can install it with the following command:
$ gem install cocoapods
CocoaPods 0.39.0+ is required to build Kronos.
To integrate Kronos into your Xcode project using CocoaPods, specify it in your
Podfile:
platform :ios, '8.0' use_frameworks!pod 'Kronos'
Then, run the following command:
$ pod install
Swift PM is a tool for managing distribution of source code.
To integrate Kronos into your project using Swift PM use:
$ export SWIFT_EXEC=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swiftc $ swift build
Carthage is a decentralized dependency manager for Cocoa. You can install it by following the instructions here.
To integrate Kronos into your project using Carthage, specify it in your
Cartfile:
github "MobileNativeFoundation/Kronos"
Then, run the following command:
$ carthage update
Looking for Kronos for your Android application? Check out Kronos for Android