我注意到,如果我手动设置设备时间,并关闭iOS设备上的自动时间同步,[NSDate date]
会返回日期和时间,假设设备时间正确 - 可能不是。
由于文档提到NSDate
与NTP有某种同步,我想知道是否有任何内置方法来获取准确的日期和时间,而不必假设设备的日期和时间是正确的。
答案 0 :(得分:3)
也许https://github.com/jbenet/ios-ntp可以帮到你?它是一个可以从时间服务器获取日期和时间的库。
答案 1 :(得分:0)
我尝试了ios-ntp,但没有得到预期的结果,所以我找到了另一个工作正常并且很容易实现的库。
荚:
pod 'NHNetworkTime'
pod 'CocoaAsyncSocket'
简单易用 每当你想要时间时导入它:
#import "NHNetworkTime.h"
调用同步 - 应用程序:didFinishLaunchingWithOptions:在启动应用程序时更新服务器的时间:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[[NHNetworkClock sharedNetworkClock] synchronize];
return YES;
}
然后,您可以在源代码中的任何位置获得同步完成时的网络时间:
NSDate *networkDate = [NSDate networkDate];
或添加通知,以便在时间更新时随时随地重新更新您的用户界面:
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(networkTimeSyncCompleteNotification:) name:kNHNetworkTimeSyncCompleteNotification object:nil];
干杯!!! :)