如果设备date和时间不准确,我怎样才能得到实际的date和时间?

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

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

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

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

NHNetworkTime

荚:

 pod 'NHNetworkTime' pod 'CocoaAsyncSocket' 

使用简单只要你想获得时间,

 #import "NHNetworkTime.h" 

在应用程序中调用同步:didFinishLaunchingWithOptions:在启动应用程序时从服务器更新时间:

 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { [[NHNetworkClock sharedNetworkClock] synchronize]; return YES; } 

那么当您的源代码中的任何地方同步完成时,您可以获得networking时间:

 NSDate *networkDate = [NSDate networkDate]; 

或者添加通知,以便在更新时间的任何地方重新更新您的用户界面:

 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(networkTimeSyncCompleteNotification:) name:kNHNetworkTimeSyncCompleteNotification object:nil]; 

干杯! 🙂