如果设备日期和时间不准确,我如何获得实际日期和时间?

时间:2013-02-19 18:02:44

标签: ios nsdate ntp

我注意到,如果我手动设置设备时间,并关闭iOS设备上的自动时间同步,[NSDate date]会返回日期和时间,假设设备时间正确 - 可能不是。

由于文档提到NSDate与NTP有某种同步,我想知道是否有任何内置方法来获取准确的日期和时间,而不必假设设备的日期和时间是正确的。

2 个答案:

答案 0 :(得分:3)

也许https://github.com/jbenet/ios-ntp可以帮到你?它是一个可以从时间服务器获取日期和时间的库。

答案 1 :(得分:0)

我尝试了ios-ntp,但没有得到预期的结果,所以我找到了另一个工作正常并且很容易实现的库。

NHNetworkTime

荚:

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];

干杯!!! :)