在一些场合,我们需要获取服务器的时间,计算该时间与客户端本地时间的差值,以利于时间同步。有人说,这个不是很简单吗,让后台的TX给你一个获取服务器时间的接口就行了。
其实这个还是比较麻烦的,更简单的是利用HTTP Header来获取服务器时间——每个HTTP header的Date参数就是这个时间。在iOS中我们通常用AFNetworking发请求,那么用AFNetworking怎么得到HTTP header信息呢?
很简单,用 [[operation response] allHeaderFields] 就行。
后记:
我还是想得太简单了,在iOS中想把上图中HTTP头的时间换成NSDate,怎么试都不行,后来才发现,虽然你可能指定时间为"EEE, d MMM yyyy HH:mm:ss zzz",但还需要额外的设置。
最后,找到了一份开源的代码解决了此问题:https://github.com/mwaterfall/MWFeedParser/blob/master/Classes/NSDate+InternetDateTime.m(ARC)
使用方法:
NSDate* inputDate = [NSDate dateFromInternetDateTimeString:dateServer formatHint:DateFormatHintRFC822];
或者:
NSDate* inputDate = [NSDate dateFromRFC822String:dateServer];
参考:http://stackoverflow.com/questions/12351464/reading-afnetworking-response-headers